1. Trang chủ
  2. » Luận Văn - Báo Cáo

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 ToolboxSpatial Transformations)

17 740 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 17
Dung lượng 465,25 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

TRƯỜNG ĐẠI HỌC NÔNG NGHIỆP HÀ NỘIKHOA 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 I

Trang 1

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

Trang 2

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

2 Chức năng của phép biến đổi không gian ảnh 3

II Các phép biến đổi không gian ảnh 4

1 Chỉnh kích cỡ ảnh(resizing an image) 6

2 Quay ảnh(rotating an image) 6

3 Cắt ảnh(cropping an image) 6

4 Một số phương pháp nội suy ảnh và hàm của ST trong matlab 6

4.1 Một số phương pháp nội suy ảnh của ST trong matlab ………1 4.2 Một số hàm của ST trong matlab 1

III Demo 1 TÀI LIỆU THAM KHẢO 1

Trang 3

I Tổng quan về phép biến đổi không gian ảnh(spatial transformation)

1 Khái niệm phép biến đổi không gian ảnh(ST)

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’ = T x (x,y) : y’=T y (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

II Các phép biến đổi không gian ảnh

Trang 4

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 chọn cho các phần tử của ma trận F nào đó

1 Chỉnh kích cỡ ảnh(resizing an image)

Xét một điểm ảnh có tọa độ(x1,x2,x3) trong không gian 3 chiều

Phép chỉnh kích cỡ ảnh được biểu diễn dưới đây biến đổi tọa độ điểm ảnh ban đầu thành tọa độ(y1,y2,y3):

2 Quay ảnh(rotating an image)

Xét một điểm có tọa độ(x1,x2) trong không gian hai chiều qua phép quay theo góc Ɵ (radian) quanh gốc Ođược tọa độ mới(y1,y2) Phép quay

đó được thể hiện như sau:

y1 = cos(θ)x1 + sin(θ)x2

y2 = −sin(θ)x1 + cos(θ)x2

Trường hợp trong không gian 3 chiều, phép quay của những mặt phẳng của nó thông thường được mô tả quay theo các trục tương ứng Phép quay 1 góc q1 theo trục x là:

Tương tự, phép quay theo trục y và z lần lượt là:

Trang 5

3 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

Bước 3: hiện kết quả, dùng hàm imshow

4.2 Một số hàm của phép biến đổi không gian trong matlab

4.2.1 Các kiểu ảnh trong matlab

*Ảnh được định chỉ số (Indexed Images) 

Một ảnh chỉ số bao gồm một ma trận dữ liệu X và ma trận bản

đồ màu map Ma trận dữ liệu có thể có kiểu thuộc lớp uint8, uint16 hoặc kiểu double Ma trận bản đồ màu là một mảng mx3 kiểu double

Trang 6

bao gồm các giá trị dấu phẩy động nằm giữa 0 và 1 Mỗi hàng của bản

đồ chỉ ra các giá trị mà: red, green và blue của một màu đơn Một ảnh chỉ số sử dụng ánh xạ trực tiếp giữa giá trị của pixel ảnh tới giá trị cách sử dụng giá trị tương ứng của X ánh xạ tới một giá trị chỉ số của map Giá trị 1 chỉ ra hàng đầu tiên, giá trị 2 chỉ ra hàng thứ hai trong bản đồ màu …

Một bản đồ màu thường được chứa cùng với ảnh chỉ số và được

tự động nạp cùng với ảnh khi sử dụng hàm imread để đọc ảnh Tuy nhiên, ta không bị giới hạn khi sử dụng bản đồ màu mặc định, ta có thể sử dụng bất kì bản đồ màu nào

*Ảnh cường độ (Intensity Images) 

Một ảnh cường độ là một ma trận dữ liệu ảnh I mà giá trị của

nó đại diện cho cường  độ trong một số vùng nào đó của  ảnh Matlab chứa một ảnh cường  độ như một ma trận đơn, với mỗi phần tử của

ma trận tương ứng với một pixel của ảnh Ma trận có thể thuộc lớp double, uint8 hay  uint16 Trong khi  ảnh cường  độ hiếm khi được lưu với bản đồ màu, Matlab sử dụng bản đồ màu để hiển thị chúng

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 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

Trang 7

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ộ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 pixel (10, 5) được lưu trữ trong RGB(10, 5, 1), RGB(10,

5, 2) và RGB(10, 5, 3) tương ứng.  

Để tính toán màu sắc của pixel tại hàng 2 và cột 3 chẳng hạn, ta nhìn vào bộ ba giá trị được lưu trữ trong (2, 3, 1:3) Giả sử (2, 3, 1) chứa giá trị 0.5176; (2, 3, 2) chứa giá trị 0.1608 và (2, 3, 3) chứa giá trị 0.0627 thì màu sắc của pixel tại (2, 3) sẽ là (0.5176, 0.1608, 0.0627)

4.2.2 Các hàm chuyển đổi không gian trong matlab

a Hàm imresize

Để điều chỉnh kích cỡ ảnh, ta dùng hàm imresize với các thông số đi

kèm Sử dụng hàm này ta có thể xác định kích cỡ của ảnh đầu ra, phương pháp nội suy được sử dụng và bộ lọc dùng để chặn răng cưa

Cú pháp của hàm imresize được biểu diễn theo nhiều cách như sau:

B = imresize(A,m)

B = imresize(A,m,method)

B = imresize(A,[mrows ncols],method)

B = imresize( ,method,n)

B = imresize( ,method,h)

Trong đó: B = imresize(A,m) trả về một ảnh B có kích cỡ bằng m lần

kích cỡ của A Ảnh A có thể là ảnh đa mức xám, RGB hay ảnh nhị

Trang 8

phân Nếu m nằm trong khoảng (0,1) thì B nhỏ hơn A Ngược lại, B 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 description

'nearest' Nearest-neighbor interpolation (the default)

'bilinear' Bilinear interpolation

'bicubic' 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

+xác định nhân tố phóng đại(magnification factor)

Để phóng to ảnh, ta cho nhân tố phóng đại lớn hơn 1 Ngược lại, nhân tố phóng đại trong khoảng (0,1) ta được ảnh thu nhỏ Ví dụ:

I = imread('circuit.tif');

Trang 9

J = imresize(I,1.25);

imshow(I) figure, imshow(J)

+ xác định chiều của ma trận ảnh đầu ra

Ta có thể xác định kích cỡ của ảnh đầu ra bằng cách truyền một vector chứa số hàng, số cột của ảnh đầu ra Lệnh sau đây tạo một ảnh đầu

ra Y gồm có 100 hàng, 150 cột:

Y = imresize(X,[100 150])

-Xác định phương pháp nội suy

Mặc định, hàm imresize sử dụng phương pháp nội suy hàm xóm gần nhất(nearest-neighbor interpolation) nhằm xác định giá trị của các pixel

trong ảnh đầu ra Tuy nhiên, ta có thể thay phương pháp trên bằng những phương pháp nội suy khác trong bảng 4.2a

Trong ví dụ này, hàm imresize sử dụng phương pháp nội suy Bilinear:

Y = imresize(X,[100 150],'bilinear')

Trang 10

-dùng bộ lọc để ngăn chặn răng cưa

Việc giảm kích cỡ ảnh có thể xuất hiện các hiện vật trong ảnh đầu ra 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 description

'nearest' Nearest-neighbor interpolation (the default)

'bilinear' Bilinear interpolation

'bicubic' 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 description

'crop' B chỉ gồm phần trung tâm của ảnh được

quay và có cùng kích cỡ với A 'loose' B gồm toàn bộ ảnh được quay và lớn hơn A

Hàm imrotate cho giá trị các điểm ảnh bên

ngoài A bằng 0 Bảng 4.2c

Ví dụ: quay ảnh một góc 350 có dùng phép nội suybilinear

I = imread('circuit.tif');

J = imrotate(I,35,'bilinear');

imshow(I)

Trang 11

figure, imshow(J)

c Hàm imcrop

Hàm imcrop dùng để cắt ảnh Nó có các cú pháp sau đây:

I2 = imcrop(I)

X2 = imcrop(X,map)

RGB2 = imcrop(RGB)

I2 = imcrop(I,rect)

X2 = imcrop(X,map,rect)

RGB2 = imcrop(RGB,rect)

[ ] = imcrop(x,y, )

[A,rect] = imcrop( )

[x,y,A,rect] = imcrop( )

Trong đó:

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)

Trang 12

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;

x, y là giá trị trên các trục hoành, trục tung của hệ tọa độ của ảnh

đầu vào

Ví dụ:

I = imread('circuit.tif');

I2 = imcrop(I,[75 68 130 112]);

imview(I), imview(I2)

Trang 13

d Hàm imtransform

Hàm imtransform áp dụng cho phép chuyển đổi không gian trong không gian hai chiều Nó có cú pháp như sau:

B = imtransform(A,TFORM)

B = imtransform(A,TFORM,INTERP)

[B,XDATA,YDATA] = imtransform( )

[B,XDATA,YDATA] = imtransform( ,param1,val1,param2,val2, ) Trong đó:

B = imtransform(A,TFORM) chuyển đổi ảnh A theo phép chuyển đổi tùy chọn theo thông số TFORM, nhận giá trị maketform hoặc

cp2tform Nếu ndims(A) > 2, ví dụ như ảnh RGB, thì phép chuyển đổi trên sẽ tự động được áp dụng cho các mặt phẳng với số chiều lớn hơn

B = imtransform(A,TFORM,INTERP) xác định phép nội suy sẽ được

sử dụng INTERP( được mặc định là 'bilinear' ) nhận một trong các giá trị dưới đây:

Value description

'bicubic' Bicubic interpolation

'bilinear' Bilinear interpolation(the default)

'nearest' 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

Trang 14

phần 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 Description

'UData'

'VData'

Hai thông số này là các vector thực có hai phần tử 'UData' và 'VData' xác định vị trí của ảnh A trong không gian U-V Hai phần tử của 'UData' đưa ra tọa độ u(hoành độ) của cột đầu tiên và cột cuối cùng của A Hai phần tử của 'VData' đưa ra tọa độ u(hoành độ) của hàng đầu tiên và hàng cuối cùng của A

Giá trị mặc định của 'UData' và 'VData' là [1 size(A,2)] và [1 size(A,1)]

'XData'

'YData'

Hai thông số này là các vector thực có hai phần tử 'XData' và 'YData' xác định vị trí của ảnh đầu ra B trong không gian X-Y Hai phần tử của 'XData' đưa ra tọa độ x(hoành độ) của cột đầu tiên và cột cuối cùng của A Hai phần tử của 'YData' đưa ra tọa

độ y(hoành độ) của hàng đầu tiên và hàng cuối cùng của A

Nếu 'XData' and 'YData' không được chỉ định thì imtransform ước lượng các giá trị cho chúng với mặc định chứa toàn bộ ảnh đầu ra

'XYScale' Một vector gồm một hoặc hai phần tử Phần tử đầu tiên của

'XYScale' chỉ ra độ rộng của mỗi pixel đầu ra trong không gian X-Y Phần tử thứ hai(nếu có) chỉ ra độ cao của pixel đầu ra Nếu 'XYScale' chỉ có một phần tử thì độ rộng và độ cao của pixel nhận cùng một giá trị

Nếu 'XYScale' không được chỉ ra trong khi 'Size' lại có thì 'XYScale' được tính từ 'Size', 'XData', và 'YData'

Nếu 'XYScale' và 'Size' đều không được chỉ ra thì tỉ lệ của các pixel đầu vào được dùng cho 'XYScale'

'Size' Một vector của hai phần tử nguyên 'Size' xác định số dòng và cột

của ảnh đầu ra B Vì số chiều cao hơn thì kích cỡ của B được dùng trực tiếp từ kích cỡ của A Mặt khác, size(B,k) =size(A,k)

Ngày đăng: 20/11/2015, 07:31

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w