TRƯỜNG ĐẠI HỌC NÔNG NGHIỆP HÀ NỘI
KHOA CÔNG NGHỆ THÔNG TIN
BÀI TẬP LỚN
QUẢN TRỊ MẠNG
Đề tài: “Các phép biến đổi không gian ảnh (Spatial Transformation) gồm:
Resizing an Image, Rotating an Image, Cropping an Image, một số phương pháp
nội suy ảnh trong matlab, các hàm của Matlab (Image Processing Toolbox\Spatial
Transformations)”
Giảng viên hướng dẫn: TS. Nguyễn Thị Thủy
Nhóm sinh viên thực hiện:
1. Nguyễn Thị Diệu Lương
2. Nguyễn Thị Nha Trang
3. Lê Thị Thanh Vân
4. Nguyễn Thùy Vân
Lớp: Tin học B – K52
1
Hà Nội, 2011
MỤC LỤC
I.
Tổng quan về phép biến đổi không gian ảnh(spatial transformation) 1
1.
Khái niệm phép biến đổi không gian ảnh(ST)............................................2
Phép biến đổi hình học(geometric transformation, geometric spatial
transformation, spatial transformation) là phép biến đổi dùng để thay
đổi mối quan hệ không gian giữa các pixel(điểm ảnh) trong ảnh. Nó
được thực hiện qua hai bước: dùng phép chuyển đổi không gian theo
tọa độ(spatial transformation of coordinates), phép toán nội suy cường
độ(intensity interpolation, grey-level interpolation).
Phép toán nội suy cường độ(intensity interpolation) là phép toán
thực hiện gán giá trị mức xám cho điểm ảnh được chuyển đổi. Trong
khi đó, phép biến đổi không gian theo tọa độ là một phép biến đổi hình
học của hệ tọa độ ảnh.
Bản chất của phép biến đổi không gian phồi hợp là ánh xạ vị trí
điểm ảnh của ảnh gốc tới vị trí mới ở ảnh đầu ra. Giả sử một điểm ảnh
ở vị trí (x,y) qua phép biến đổi không gian T có vị trí mới là (x’,y’),
trong đó x’ = Tx(x,y) : y’=Ty(x,y).
2. Chức năng của phép biến đổi không gian ảnh
Phép biến đổi không gian thực hiện các chức năng sau:
-canh chỉnh những ảnh được chụp ở các thời điểm khác nhau hoặc với
các cảm biến khác nhau
-sửa ảnh cho sự biến dạng của ống kính
-sửa sự tác động hướng camera
-kỹ xảo hình ảnh hoặc các hiệu ứng đặc biệt khác
3
II.
Các phép biến đổi không gian ảnh
Phép biến đổi không gian theo tọa độ có thể chia tỉ lệ, quay, dịch
chuyển hoặc cắt một tập tọa độ các điểm ảnh, phụ thuộc vào giá trị được
Cắt ảnh(cropping an image)
Phép cắt ảnh được biểu diễn bởi ma trận sau:
4.
Thuật toán và hàm của phép biến đổi không gian trong matlab
Công cụ matlab(Image Processing Toolbox) bao gồm các hàm thực
hiện một số phép chuyển đổi không gian đặc biệt như chỉnh kích cỡ ảnh,
quay ảnh…
4.1.
•
•
•
Một số phương pháp nội suy ảnh của phép biến đổi
không gian trong matlab
Resizing an image
Bước 1: đọc ma trận ảnh, dùng hàm imread
Bước 2: chỉnh sửa kích thước ảnh, dùng hàm resize
Bước 3: hiện kết quả, dùng hàm imshow
Rotating an image
Bước 1: đọc ma trận ảnh, dùng hàm imread
Bước 2: quay ảnh, dùng hàm imrotate
Bước 3: hiện kết quả, dùng hàm imshow
Cropping an image
Bước 1: đọc ma trận ảnh, dùng hàm imread
Bước 2: cắt ảnh, dùng hàm imcrop
Những phần tử trong ma trận cường độ đại diện cho các cường
độ khác nhau hoặc độ xám. Những điểm có cường độ bằng 0 thường
được đại diện bằng màu đen và cường độ 1,255 hoặc 65535 thường
đại diện cho cường độ cao nhất hay màu trắng.
*Ảnh nhị phân (Binary Images)
Trong một ảnh nhị phân, mỗi pixel chỉ có thể chứa một trong
hai giá trị nhị phân 0 hoặc 1. Hai giá trị này tương ứng với bật hoặc tắt
(on hoặc off). Một ảnh nhị phân được lưu trữ như một mảng logic của
0 và 1.
* Ảnh RGB (RGB Images)
Một ảnh RGB - thường được gọi là true-color, được lưu trữ
trong Matlab dưới dạng một mảng dữ liệu có kích thước 3 chiều
6
mxnx3 định nghĩa các giá trị màu red, green và blue cho mỗi pixel
riêng biệt. Ảnh RGB không sử dụng palette. Màu của mỗi pixel được
quyết định bởi sự kết hợp giữa các giá trị R, G, B (Red, Green, Blue)
được lưu trữ trong một mặt phẳng màu tại vị trí của pixel. Định dạng
file đồ hoạ lưu trữ ảnh RGB giống như một ảnh 24 bits trong đó R, G,
B chiếm tương ứng 8 bit một. Điều này cho phép nhận được 16 triệu
màu
khác
nhau.
Một mảng RGB có thể thuộc lớp double, uint8 hoặc uint16. Trong
một mảng RGB thuộc lớp double, mỗi thành phần màu có giá trị giữa
0 và 1. Một pixel mà thành phần màu của nó là (0, 0, 0) được hiển thị
với màu đen và một pixel mà thành phần màu là (1, 1, 1 ) được hiển
thị với màu trắng. Ba thành phần màu của mỗi pixel được lưu trữ cùng
với chiều thứ 3 của mảng dữ liệu. Chẳng hạn, giá trị màu R, G, B của
lớn hơn A.
B = imresize(A,m,method) trả về một ảnh có kích cỡ gấp m lần kích cỡ
của ảnh A, dùng phương pháp nội suy được chỉ ra bởi tham số
method. Tham số này là một xâu có thể có một trong các giá trị dưới
đây.
Value
'nearest'
'bilinear'
'bicubic'
description
Nearest-neighbor interpolation (the default)
Bilinear interpolation
Bicubic interpolation
Bảng 4.2a
B = imresize(A,[mrows ncols],method) trả về một ảnh có kích cỡ
mrows x ncols. Nếu kích cỡ của ảnh đầu ra có tỉ lệ không bằng nhau
thì ảnh sẽ bị biến dạng. Cụ thể, khi kích cỡ ảnh đầu ra nhỏ hơn kích cỡ
ảnh đầu vào và method là 'bilinear' hoặc 'bicubic' thì imresize áp dụng
bộ lọc thông thấp trước khi phép nội suy làm giảm lượng răng cưa.
Kích cỡ mặc định của bộ lọc là 11x11.
Ta có thể chỉ ra thứ tự khác nhau cho bộ lọc mặc định dùng hàm
sau:
B = imresize(...,method,n) với n là số nguyên chỉ ra kích cỡ bộ lọc.
Nếu n=0 thì hàm imresize bỏ qua bước lọc.
Ngoài ra ta có thể dùng hàm imresize với bộ lọc tùy chọn
B = imresize(...,method,h)
với h là bộ lọc FIR hai chiều(ftrans2, fwind1, fwind2, fsamp)
-xác định kích cỡ của ảnh đầu ra: theo 2 cách
như các răng cưa, vì thông tin luôn bị mất khi ta giảm kích cỡ ảnh. Răng
cưa xuất hiện như các mẫu gợn trong ảnh đầu ra.
b.
Hàm imrotate
Hàm imrotate dùng để quay ảnh, có các cách dùng sau đây:
B = imrotate(A,angle)
B = imrotate(A,angle,method)
B = imrotate(A,angle,method,bbox)
-Trong đó:
B = imrotate(A,angle) quay ảnh A một góc angle ngược chiều kim
đồng hồ, dùng phép nội suy ‘nearest’.
B = imrotate(A,angle,method) quay ảnh A một góc ngược chiều kim
đồng hồ và có dùng phép nội suy được xác định tùy ý thông qua thông
số method.
Value
'nearest'
'bilinear'
'bicubic'
description
Nearest-neighbor interpolation (the default)
Bilinear interpolation
Bicubic interpolation
Bảng 4.2b
B = imrotate(A,angle,method,bbox) quay ảnh A theo góc angle.
Thông số bbox xác định ranh giới của ảnh đầu ra, có giá trị mặc định
‘loose’, nhận một trong những giá trị sau đây:
Value
[...] = imcrop(x,y,...)
[A,rect] = imcrop(...)
[x,y,A,rect] = imcrop(...)
Trong đó:
11
Imcrop cắt ảnh thành một khung chữ nhật có kích thước tùy ý. Trong
các cú pháp dưới đây, hàm này biểu diễn ảnh đầu vào và đợi cho đến
khi ta dùng chuột chỉ ra một khung chữ nhật có kích thước cụ thể.
I2 = imcrop(I)
X2 = imcrop(X,map)
RGB2 = imcrop(RGB)
Nếu ta bỏ các thông số đầu vào thì hàm imcrop sẽ thực hiện trên ảnh
theo các trục tọa độ hiện thời.
Ngoài ra, ta cũng có thể chỉ ra khung cắt hình chữ nhật một cách gián
tiếp bằng cú pháp
I2 = imcrop(I,rect)
X2 = imcrop(X,map,rect)
RGB2 = imcrop(RGB,rect)
rect là một vector có 4 phần tử [xmin ymin width height] dùng để xác
định vị trí của khung
Muốn thiết lập lại hệ tọa độ(mặc định hệ gồm 2 phần tử) cho ảnh đầu
vào ta dùng cú pháp
[...] = imcrop(x,y,...)
Nếu muốn cung cấp thêm thông số cho ảnh đầu ra thì ta có cú pháp
sau:
[A,rect] = imcrop(...)
[x,y,A,rect] = imcrop(...)
với A là ảnh đầu ra;
'bilinear'
'nearest'
description
Bicubic interpolation
Bilinear interpolation(the default)
Nearest-neighbor interpolation
[B,XDATA,YDATA] = imtransform(...) trả về vị trí của ảnh đầu ra B trong
không gian X-Y. XDATA và YDATA là các vector có hai phần tử. Các phần
13
tử của XDATA chỉ ra tọa độ x của cột đầu tiên và cột cuối cùng của ảnh B.
Các phần tử của YDATA chỉ ra tọa độ y của dòng đầu tiên và cột cuối cùng
của ảnh B.
[B,XDATA,YDATA] = imtransform(...,param1,val1,param2,val2,...) xác
định các thông số điều khiển các khía cạnh khác của phép chuyển đổi. Bảng
dưới đây liệt kê tất cả các thông số của phép chuyển đổi.
Parameter
'UData'
'VData'
'XData'
'YData'
'XYScale'
'Size'
với k>2. Nếu 'Size' không được chỉ ra thì nó được tính từ
'XData', 'YData', và 'XYScale'.
Một mảng chứa một hoặc nhiều giá trị. Những giá trị này được
14
dùng cho các pixel đầu ra khi vị trí được chuyển đổi tương ứng
trong ảnh đầu vào nằm ngoài biên.
Nếu A có hai chiều thì 'FillValues' là đại lượng vô hướng.
Nếu A có số chiều cao hơn thì 'FillValues' là một mảng có kích
cỡ
thỏa
mãn:
size(fill_values,k)=size(A,k+2)
hoặc
size(fill_values,k)=1
Nếu A là mảng 4 chiều thì 'FillValues' có thể là đại lượng vô
hướng, 1x10, 3x1, or 3x10
*Sử dụng hàm maketform
Khi sử dụng hàm này, ta chỉ ra kiểu biến đổi ta muốn thực hiện. Các
kiểu biến đổi mà maketform trợ giúp bao gồm:
+ ’ affine’: Biến đổi có thể bao gồm: translation ( dịch ), rotation ( quay ),
scaling(chỉnh kích thước), stretching và shearing(cắt). Các đường thẳng vẫn
là đường thẳng, đường song song vẫn song song nhưng hình chữ nhật có thể
bị biến đổi.
+ ’box’: Một trường hợp đặc biệt của affine khi mỗi chiều được dời và định
tỉ lệ độc lập
+ ‘composite ‘: Bao gồm tổ hợp của hai hay nhiều phép biến đổi
+ ‘custom ‘: Biến đổi do người dùng tự định nghĩa, nó cung cấp các hàm
thuận hoặc nghịch được gọi bởi hàm imtransform
5. TÀI LIỆU THAM KHẢO
Harvey Rhody. Lecture 2: Geometric Image Transformations. Chester F.
Carlson Center for Imaging Science, Rochester Institute of Technology,
2005.
2. />3. />4. />5. />6. />kategori=1&otherposting=1&postingid=783&postingcode=16&tanggal=21
&bulan=7&tahun=2011&minggu=5
7. />kategori=1&otherposting=1&postingid=783&postingcode=16&tanggal=11
&bulan=8&tahun=2011&minggu=5
8. Xiangwei Zhang. Image Correction Using Geometric transformations.
Department of Electrical Engineering,Iowa State University.
9. />10. />1.
17