You are on page 1of 22

ĐẠI HỌC QUỐC GIA TP.

HCM

TRƯỜNG ĐẠI HỌC BÁCH KHOA

BÀI TẬP LỚN MÔN HỌC


ĐẠI SỐ TUYẾN TÍNH
ĐỀ TÀI 6

PHÉP QUAY GIVEN TRONG XỬ LÝ HÌNH ẢNH


TRONG KHÔNG GIAN ĐA CHIỀU

LỚP

GVHD:

1
LỜI NÓI ĐẦU
Bài báo cáo có mục đích hướng tới việc hiểu về định nghĩa ứng dụng của phép quay
Given vào cuộc sống, đồng thời cho thấy khả năng của Matlab trong mục đích lập
trình và khả năng xử lí hình ảnh của nó.
Ngoài ra,nhóm xin được cảm ơn cô Nguyễn Xuân Mỹ đã hướng dẫn nhóm với đề
tài 6 để có thể giải quyết và hoàn thành tiến độ được giao.

2
MỤC LỤC
PHẦN MỞ ĐẦU..............................................................................................6

Phần 1: Cơ sở lý thuyết phép quay Given........................................................7


1.1 Khái niệm phép quay Given.......................................................................7
1.2 Ý tưởng phép quay Given..........................................................................7

Phần 2: Ứng dụng của phép quay..................................................................11


2.1 Ứng dụng phép quay trong thực tế..........................................................11
2.2 Ứng dụng phép quay trong không gian nhiều chiều................................13

Phần 3: Ứng dụng matlab xử lí hình ảnh trong không gian nhiều chiều bằng
phép quay Given............................................................................................15
3.1 Giải thích các câu lệnh............................................................................15
3.2 Giải thích các bước và dòng lệnh của code.............................................16

KẾT LUẬN...................................................................................................20

TÀI LIỆU THAM KHẢO.............................................................................21

3
4
PHẦN MỞ ĐẦU

1. ĐỐI TƯỢNG NGHIÊN CỨU:

Phép quay Given, ứng dụng xử lí hình ảnh trong không gian nhiều
chiều bằng phép quay Given.
2. PHẠM VI NGHIÊN CỨU
Không gian: Việt Nam Thời gian: 2023
3. MỤC TIÊU NGHIÊN CỨU
Thứ nhất: Mô tả được phép quay Given
Thứ hai: Ứng dụng của phép quay trong xử lý hình ảnh (2 chiều,
3 chiều và n chiều)
Thứ ba: Sản phẩm là một phần mềm có khả năng xử lý (xoay)
hình ảnh trong không gian 2,3 hoặc n chiều
4. PHƯƠNG PHÁP NGHIÊN CỨU
Đọc và phân tích lý thuyết cũng như thử nghiệm cách viết chương
bằng chương trình matlab.
5. KẾT CẤU CỦA ĐỀ TÀI
Ngoài mục lục, phần mở đầu, kết luận và tài liệu tham khảo, đề tài
gồm 03 phần:

- Phần 1: Cơ sở lý thuyết phép quay Given.


- Phần 2: Ứng dụng của phép quay
- Phần 3: Ứng dụng matlab xử lí hình ảnh trong không gian nhiều
chiều bằng phép quay Given

5
Phần 1: Cơ sở lý thuyết phép quay Given.

1.1 Khái niệm phép quay Given:


Kỹ thuật quay Givens là một phương pháp để phân tích ma trận [A] thành tích
của ma trận [Q] và ma trận [R] bằng cách làm cho các phần tử lần lượt bằng 0 cho
đến khi có được ma trận tam giác phải.

1.2 Ý tưởng phép quay Given:


Dùng một ma trận quay đơn giản 2  2 đặt dọc theo đường chéo chính của một
ma trận đơn vị và làm cho một phần tử của ma trận bằng zero. Các phần tử của
ma trận quay để quay một vec tơ ngược chiều kim đồng hồ một góc  là:

=
Nếu ta muốn quay vec tơ [x 1 x2]T và muốn làm cho x2 bằng zero rồi quay theo
chiều kim đồng hồ một góc  (hay ngược chiều kim đồng hồ một góc ‐ ) trong
đó:

thì ma trận quay để thực hiện phép quay này theo chiều kim đồng hồ một góc
 là:

=
Trong đó:
x1 x2
cos c  sin s 
x  x22
2
1
x  x22
2
1

6
Do đó:

Chú ý là như mong muốn:

Nếu A là ma trận m  n, ta sẽ xem điều gì xảy ra khi ta thay các phần tử của
[Q] vào ma trận con xác định bằng các cột và hàng thứ i, các cột và hàng thứ j. Nói
cách khác ta thay ma trận 2  2 này dọc theo đường chéo chính tại một số điểm:

dkl k  i, l  j
c k, l  i; k,l  j
s k  i; l  j
s k  j; l  i

7
Như vậy [G] là ma trận đơn vị m  m ngoại trừ các giá trị đã bị thay thế:
gii = gjj = c
gij = ‐gij = s
Điều này sẽ tạo ra ma trận

unita:
nghĩa là

 g g  kp
lk lp
1
và đòi hỏi:
c2 + s2 = 1

Điều này đúng vì cos2 + sin2 = 1 . Khi ma trận này được áp dụng cho ma
trận m  n ta có:

åkl alp akp k  i, j


1
b kp   g kla lp   g ila lp  ca ip + sa jp ki
1
1
 g jla lp  sa ip ca jp kj
1

8
Như vậy ma trận mới chỉ bị thay đổi ở hàng i và cột j. Ta chọn s và c sao cho
các phần tử ở cột r và hàng j bằng zero:
ajr air
s c
a 2jr  air2 a 2jr  air2

Như vậy ta sẽ có:

9
Phần 2: Ứng dụng của phép quay

2.1 Ứng dụng phép quay trong thực tế

Phép quay Given trong xử lí hình ảnh không gian 2D,3D và n chiều rất hữu
ích trong nhiều ứng dụng khác nhau trong cuộc sống :

1. Tự động hóa và robot học: Trong lĩnh vực này, phép quay Given được
sử dụng để xử lý hình ảnh từ các cảm biến và truyền tải thông tin đến
các hệ thống tự động hóa và robot. Ví dụ, trong bảo mật, phép quay
Given có thể giúp robot nhìn và xác định các vật thể, nhận dạng khuôn
mặt và vân tay cho mục đích xác thực và quản lý truy cập.

2. Xử lý hình ảnh y học: Phép quay Given được sử dụng rộng rãi trong
lĩnh vực y học để xử lý hình ảnh từ các kỹ thuật siêu âm, MRI, CT scan
và hình ảnh vệ tinh. Nó giúp phân tích và chuẩn đoán các bệnh lý, giúp
nhà điều dưỡng và bác sĩ đưa ra quyết định chẩn đoán chính xác và
điều trị tốt hơn.

3. Xử lý hình ảnh trong xe tự hành: Trong lĩnh vực xe tự hành và trí tuệ
nhân tạo, phép quay Given được sử dụng để xử lý hình ảnh từ camera
và các cảm biến trên xe. Nó giúp xe tự định vị, phát hiện và nhận dạng
biển báo giao thông, xe và người đi bộ, đồng thời dự đoán và phản ứng
với tình huống giao thông.

4. Quản lý chất lượng sản phẩm: Trong lĩnh vực sản xuất và kiểm tra chất
lượng, phép quay Given có thể được sử dụng xử lý hình ảnh để phát
hiện các khuyết tật sản phẩm. Ví dụ, trong điện tử, nó có thể phát hiện
các lỗi mạch in, hoặc trong sản xuất ô tô, nó có thể xác định các phần
tử bị lỗi trên dây chuyền lắp ráp.

10
5. Xác định vận tốc và hướng di chuyển: Phép quay Given có thể giúp xác
định vận tốc và hướng di chuyển của một đối tượng trong không gian,
từ các ứng dụng theo dõi chuyển động trong thể thao, công nghệ tự
hành, định vị xe hơi tự động, đến ngành hàng không và khí tượng học.

6. Phân tích và nhận diện khuôn mặt: Phép quay Given có thể được sử
dụng để nhận dạng và phân tích khuôn mặt, từ việc áp dụng trong bảo
mật cho điện thoại di động, hay trong các ứng dụng xác thực người dùn

7. Đo lường và chấm điểm trong thể thao: Phép quay Given có thể được
sử dụng để đo lường và chấm điểm trong các môn thể thao như bóng
đá, bóng rổ hay quần vợt. Bằng cách theo dõi vị trí và chuyển động của
các vật thể hay người chơi, phép quay Given giúp hệ thống tự động
chấm điểm và đánh giá hiệu suất.

11
2.1 Ứng dụng phép quay trong không gian nhiều chiều

Phép quay trong không gian nhiều chiều có nhiều ứng dụng quan trọng trong
nhiều lĩnh vực, bao gồm toán học, khoa học máy tính, vật lý, đồ họa máy tính, và
nhiều ứng dụng khác. Dưới đây là một số ứng dụng phổ biến của phép quay trong
không gian nhiều chiều:

1. Xử lý hình ảnh và đồ họa máy tính: Phép quay được sử dụng để biến đổi
hình ảnh và đối tượng 3D. Nó cho phép thay đổi góc nhìn và vị trí của
các đối tượng, cũng như thực hiện các phép biến đổi hình học như xoay,
thu phóng và dịch chuyển.

2. Thực tế ảo trong công nghiệp: Trong các ngành công nghiệp như xây
dựng, thiết kế sản phẩm, hoặc mô phỏng không gian công nghiệp, phép
quay Given giúp tạo ra mô hình 2D,3D,n chiều chi tiết về bản vẽ, sơ đồ
hoặc mô hình vật lý.

3. Mã hóa và nén dữ liệu: Trong lĩnh vực xử lý tín hiệu và nén dữ liệu, phép
quay có thể được sử dụng để biến đổi dữ liệu ban đầu thành một không
gian mới với ít chiều hơn, giúp giảm thiểu thông lượng và tối ưu hóa lưu
trữ.

4. Xử lý tín hiệu và âm thanh: Phép quay có thể được áp dụng để biến đổi
tín hiệu âm thanh hoặc tín hiệu số thành các không gian mới để phân tích
hoặc trích xuất thông tin quan trọng.

5. Vật lý: Trong nhiều lĩnh vực của vật lý, phép quay được sử dụng để biểu
diễn sự thay đổi vị trí và hướng của các đối tượng trong không gian,
chẳng hạn như khi nghiên cứu chuyển động của các vật thể trong không
gian 3D.

12
6. Xử lý dữ liệu địa lý: Trong GIS (hệ thống thông tin địa lý), phép quay
được sử dụng để biến đổi và hiệu chỉnh dữ liệu địa lý và vị trí.Phép quay
cho phép biến đổi dữ liệu và đối tượng trong không gian nhiều chiều một
cách hiệu quả và có nhiều ứng dụng thú vị trong nhiều lĩnh vực.

13
Phần 3: Ứng dụng matlab xử lí hình ảnh trong không gian nhiều chiều
bằng phép quay Given
3.1 Giải thích các câu lệnh
1. ‘+’, ‘-‘, ‘*’, ‘/’, ‘.^’, ‘sqrt’ :Đây là các toán tử trong MATLAB: cộng, trừ,
nhân, chia, lũy thừa, căng bậc hai.
2. ‘=’ :Phép gán trong MATLAB.
3. Globla:Gọi và sử dụng biến từ hàm khác
4. for():Hàm vòng lập
5. uigetfile():Thêm file
6. strcat():Gán tên và ảnh
7. imread():Đọc file ảnh
8. imshow():Hiển thị ảnh
9. size():Phân tích ảnh sang dạng ma trận
10. ceil():Đưa về dạng số nguyên
11. unit8():Định dạng lại ma trận
12. zeros():Đưa về ma trận 0
13. abs():Trị tuyệt đối
14. cos():Hàm cos
15. sin():Hàm sin
16. function():Hàm
17. end :Kết lệnh

14
3.2 Giải thích các bước và dòng lệnh của code
B1:Thêm hình ảnh
global a
[filename, pathname] = uigetfile('*.*', 'Pick an Image'); /*Them file
anh*/
filenanh=strcat(pathname,filename); /*đưa file ảnh về biến fileanh*/
a=imread(filename); /*cho a đọc fileanh*/
imshow(a,'Parent',app.UIAxes); /*hiện thị lên màn hình*/
end
ví dụ:

15
B2:Nhập góc
function NhapGocEditFieldValueChanged(app, event)

goc=app.NhapGocEditField.Value; /*Nhập giá trị góc*/

end

16
B3:Xoay Hình Ảnh
function XoayButtonPushed(app, event)
global a
global J
goc=app.NhapGocEditField.Value;
J=a;
[hang,cot,z]= size(a); /*Phân tích hình ảnh thành dạng ma trận*/
rads=2*pi*goc/360; /*đổi độ thành góc (hàm sin,cos dùng được đơn vị
radian*/

%tạo nền
hangnen=ceil(hang*abs(cos(rads))+cot*abs(sin(rads))); /*ceil( ) đưa về dạng
số nguyên vì hàm chỉ chạy trên số nguyên*/
cotnen=ceil(hang*abs(sin(rads))+cot*abs(cos(rads))); /*abs( ) trị tuyệt đối để
đưa giá trị đúng nhất */
J=uint8(zeros([hangnen cotnen z ])); /*uint8( ) format lại hàng và cột và
zeros( ) đưa về ma trận không*/

%Tìm tâm ảnh


xo=ceil(hang/2);
yo=ceil(cot/2);
midx=ceil((size(J,1))/2);
midy=ceil((size(J,2))/2);

%Sử dụng hàm vòng lặp và phép quay để xoay hình ảnh
for i=1:size(J,1)
for j=1:size(J,2)

x= (i-midx)*cos(rads)+(j-midy)*sin(rads);
y= -(i-midx)*sin(rads)+(j-midy)*cos(rads);
x=round(x)+xo;
y=round(y)+yo;

if (x>=1 && y>=1 && x<=size(a,1) && y<=size(a,2) )


J(i,j,:)=a(x,y,:);
end

end
end

imshow(J,'Parent',app.UIAxes_2);

17
end

18
KẾT LUẬN
-Matlab được tích hợp một giao diện lập trình phần mềm thân thiện với người
dùng, cho phép người dùng học hỏi và phát triển phần mềm tính toán,mô phỏng,xử
lí hình ảnh theo tuỳ nhu cầu.
-Như vậy,nhóm đã thành công trong việc mô tả phép quay Given và ứng dụng
của phép quay vào xử lí hình ảnh và thức tế.Nhóm đã sử dụng công cụ App
Designer thuộc phần mềm Matlab để lập trình một sản phầm là phần mềm có thể xử
lí và quay hình ảnh.Tuy nhiên,đối với hình ảnh 2D công cụ đoạn code có tính phức
cao nên khi chuyển sang 3D thì công cụ tỏ ra khá chậm trong xử lí và lập trình.

19
TÀI LIỆU THAM KHẢO
[1] Meyer, Matrix analysis and applied linear algebra
[2] Lay, Linear Algebra and Its applications
[3] The MathWorks, Inc ,MathWork Training Course
[4] L. Beilina, E. Karchevskii and M. Karchevskii, Numerical Linear Algebra:
Theory and Applications

20
21
22

You might also like