1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

Bài giảng Xử lý tín hiệu nâng cao (Advanced signal processing) - Chương 6: Xử lý ảnh trong Matlab

51 102 0

Đ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 51
Dung lượng 1,21 MB

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

Nội dung

Chương 6 gồm có những nội dung chính sau: Tín hiệu hai chiều (ảnh số), biểu diễn ảnh, các kiểu ảnh trong matlab, ảnh được định chỉ số (indexed images), ảnh cường độ (intensity images), ảnh nhị phân (binary images),... Mời các bạn cùng tham khảo.

Trang 1

Xử lý tín hiệu nâng cao

-Advanced signal

processing-Chương 6

Xử lý ảnh trong Matlab

Trang 2

Tín hiệu hai chiều (ảnh số)

 Biểu diễn ảnh

 Một ảnh được biểu diễn dưới dạng một hàm f(x,y)

 Đối với ảnh số đơn sắc, giá trị f tại (x,y) được gọi

là mức xám

 Kết quả của quá trình lấy mẫu và lượng tử hóa là

 Kết quả của quá trình lấy mẫu và lượng tử hóa là một ma trận số liệu

 Một ảnh có kích thước M x N là một ma trận có M hàng và N cột, mỗi một giá trị trên ma trận gọi là một điểm ảnh (pixel).

Trang 3

Biểu diễn ảnh

 Một ma trận tọa độ ảnh trong Matlab được biểu diễn

Trang 4

Các kiểu ảnh trong Matlab

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

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

 Ả nh nhị phân (Binary Images)

 Ả nh RGB (RGB Images)

 Ả nh RGB (RGB Images)

Trang 5

Ả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 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ị trong bản đồ màu Màu sắc của mỗi pixel ảnh được tính toán bằng 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

Trang 6

Ả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

Trang 7

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

Trang 8

Ả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 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 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).

Trang 9

Đọc và hiển thị 1 ảnh

 Xóa các biến và các cửa sổ ảnh

clear, close all

Trang 10

 Có thể xem các thông tin về biến trong workspace bằng lệnh whos

Trang 11

Thực hiện cân bằng Histogram trên ảnh

 Ta thấy, pout.tif là một hình ảnh có độ tương phản hơi thấp

 Để xem sự phân bố cường độ trong pout.tif, ta có thể tạo ra một lược đồ histogram bằng cách gọi hàm imhist

 Trước khi gọi hàm imhist, sử dụng lệnh figure để lược đồ histogram không ghi đè lên màn hình hiển thị của ảnh I trong cửa sổ hiện tại.

1600

figure, imhist(I)

0 200 400 600 800 1000 1200 1400

Phạm vi cường độ khá hẹp

Nó không che hết phạm

tiềm năng của [0, 255], và

thiếu các giá trị cao và thấp

sẽ cho kết quả tương phản

tốt.

Trang 12

Thực hiện cân bằng Histogram trên ảnh

 Hộp công cụ cung cấp nhiều cách để cải thiện

độ tương phản trong một hình ảnh

 Hàm histeq để dàn trải các giá trị cường độ

trên toàn bộ phạm vi ảnh, gọi là quá trình cân bằng histogram

I2 = histeq(I);

 Xem thêm hàm histeq, imadjust, adapthisteq

Trang 13

Thực hiện cân bằng Histogram trên ảnh

 Hiển thị ảnh sau khi đã được cân bằng histogram

figure, imshow(I2)

 Xem lược đồ histogram của ảnh I2

figure, imhist(I2)

0 50 100 150 200 250 0

200 400 600 800 1000

1200

1400

1600

Trang 14

Thực hiện cân bằng Histogram trên ảnh

 Ảnh trước và sau khi được cân bằng histogram

0 200 400 600 800 1000 1200 1400 1600

0 50 100 150 200 250 0

200 400 600 800 1000

1200

1400

1600

Trang 15

Lưu một ảnh từ ma trận ra một file

 Dùng lệnh imwrite:

imwrite (I2, 'pout2.png')

Trang 16

Xem các thông tin của ảnh

 Dùng lệnh imfinfo

imfinfo('pout2.png')

Trang 18

Ví dụ 2

 Ướ c lượng giá trị của điểm ảnh Background:

 Ví dụ gọi hàm imopen để thực hiện các thao tác mở về hình thái học Chú ý lời gọi đến hàm strel, tạo ra một phần tử cấu trúc hình đĩa với bán kính 15 Để loại bỏ các hạt gạo từ hình ảnh, các phần tử cấu trúc phải đủ lớn để

nó không thể đặt vừa toàn bộ bên trong một hạt gạo

background = imopen(I,strel('disk',15));

 Để xem ảnh background ước lượng, gõ lệnh:

imview(background)

Trang 19

Ví dụ 2

 Xem xấp xỉ Background như một bề mặt

 Sử dụng lệnh surf để tạo ra một màn hình hiển thị bề mặt của xấp xỉ nền Lệnh surf tạo bề mặt màu tham số cho phép bạn xem các hàm toán học trong một vùng chữ nhật Hàm surf yêu cầu dữ liệu lớp

double, do đó, trước tiên bạn cần phải chuyển đổi nền bằng lệnh

double

figure, surf(double(background(1:8:end,1:8:end))),zlim([0 255]); set(gca,'ydir','reverse');

0 50 100 150 200 250

Trang 20

 Vì phép trừ, giống như nhiều phép toán trong MATLAB, chỉ

hỗ cho dữ liệu lớp double, bạn phải sử dụng hàm

hỗ cho dữ liệu lớp double, bạn phải sử dụng hàm

 Hiển thị hình ảnh với nền đồng nhất hơn

imview(I2)

Trang 21

Ví dụ 2

 Điều chỉnh độ tương phản trong ảnh đã xử lý

 Sau phép trừ, hình ảnh có một nền thống nhất nhưng ảnh hơi tối quá.

 Sử dụng imadjust để điều chỉnh độ tương phản của hình ảnh.

I3 = imadjust(I2);

hòa 1% dữ liệu ở cả hai cường độ thấp và cao của I2 và bằng cách trải dài các giá trị cường độ để điền đầy phạm vi động uint8.

dài các giá trị cường độ để điền đầy phạm vi động uint8.

 Hiển thị ảnh I3 đã được điều chỉnh

imview(I3);

Trang 22

Ví dụ 2

 Tạo ra một Phiên bản nhị phân của ảnh

 Tạo một phiên bản nhị của hình ảnh bằng cách sử dụng ngưỡng

• Hàm Graythresh tự động tính ra một ngưỡng thích hợp sử dụng để chuyển đổi ảnh cường độ sang ảnh nhị phân

• Hàm Im2bw thực việc chuyển đổi

level = graythresh(I3);

bw = im2bw(I3,level);

imview(bw)

Trang 23

Ví dụ 2

 Tạo ra một Phiên bản nhị phân của ảnh

 ả nh nhị phân bw tạo ra bởi lệnh im2bw thuộc lớp

logical, xem bằng lệnh whos

whos

Trang 24

Ví dụ 2

 Xác định số lượng đối tượng trong Image

 Sau khi chuyển đổi ảnh sang một ảnh nhị phân, có thể sử dụng hàm

và trả về số lượng các thành phần mà nó tìm thấy trong ảnh tại tham số

đầ u ra, numObjects

[labeled,numObjects] = bwlabel(bw,4)

numObjects =

101

Trang 25

Ví dụ 2

 Xác định số lượng đối tượng trong Image

 Độ chính xác của kết quả phụ thuộc vào một số yếu tố, bao gồm:

• Kích thước của các đối tượng

• Có hay không có đối tượng được chạm vào (trong

• Có hay không có đối tượng được chạm vào (trong trường hợp chúng được gán nhãn là một trong những

Trang 26

imview(labeled)

Trang 27

Ví dụ 2

 Xem xét ma trận nhãn

Trang 28

Ví dụ 2

 Hiển thị Ma trận Nhãn như một ảnh chỉ số PseudoColor

 Một cách tốt để xem một ma trận nhãn là để hiển thị nó như một ảnh chỉ số PseudoColor

 Trong hình ảnh PseudoColor, con số xác định một đối tượng trong bản

đồ ma trận nhãn với một màu sắc khác nhau trong ma trận bản đồ màu đượ c liên kết Các màu trong ảnh làm các đối tượng dễ phân biệt

đượ c

đượ c

 Để xem một ma trận nhãn theo cách này, sử dụng hàm label2rgb

Sử dụng hàm này, bạn có thể chỉ định bản đồ màu, màu nền, và cách các đối tượng trong bản đồ ma trận nhãn có màu nào bản đồ màu.

pseudo_color = label2rgb(labeled, @spring, 'c', 'shuffle'); imview(pseudo_color);

Trang 29

Ví dụ 2

 Hiển thị Ma trận Nhãn như một ảnh chỉ số PseudoColor

pseudo_color = label2rgb(labeled, @spring, 'c', 'shuffle'); imview(pseudo_color);

Trang 30

Phép lọc tuyến tính

 Trong Matlab, sử dụng hàm fspecial để tạo mặt nạ lọc

>> H= fspecial('type',parameter)

'average' averaging filter

'average' averaging filter

'disk' circular averaging filter

'gaussian' Gaussian lowpass filter

'motion' motion filter

'prewitt' Prewitt horizontal edge-emphasizing filter

'sobel' Sobel horizontal edge-emphasizing filter

'unsharp' unsharp contrast enhancement filter

Trang 32

1 1

1

1 1

1

9 1

Trang 34

Phép lọc tuyến tính

 Mặt nạ motion

 H= fspecial('motion',len,theta)

 Giá trị mặc định len=9, theta=0

 Đượ c sử dụng để làm nhòe ảnh có hướng

Trang 35

1 1

0

1 2

1

Trang 36

Phép lọc tuyến tính

 Mặt nạ unsharp

 H= fspecial('unsharp',alpha)

 Tăng cường độ nét và tương phản

 Kích thước 3x3, tham số alpha mặc định = 0.2

figure,imshow(I2)

Trang 37

Phép lọc tuyến tính

Trang 38

Lọc tuyến tính

 Mặt nạ Lapalacian

 fspecial('laplacian', alpha)

 Tăng độ sắc nét cho ảnh

Trang 40

Loại bỏ viền đen

Trang 41

 Để loại bỏ viền đen

I3 = imfilter(I,H,'replicate'); imshow(I2);figure,imshow(I3);

Trang 42

Phép lọc phi tuyến

 Mục đích giảm nhiễu xung

 Các loại bộ lọc phi tuyến

Trang 43

Lọc phi tuyến

 Bộ lọc hạng: là phương pháp lọc trong đó

mức xám tại một điểm được tính dựa trên sự xếp hạng các điểm ảnh lân cận

 Hàm ordfilt2 cung cấp cho ta bộ lọc dạng này

g= ordfilt2(f, order, domain)

 Ví dụ

g=ordfilt2(f,1,ones(m,n));

g=ordfilt2(f,m*n,ones(m,n));

Trang 45

Khôi phục ảnh

 Khôi phục ảnh tập trung vào việc loại bỏ hay giảm thiểu sự biến dạng xảy ra trong quá trình thu nhận ảnh

 Sự biến dạng ảnh có thể bao gồm :

 Nhiễu-là những sai khác trong giá trị của pixel,

 Ả nh hưởng quang học : sự mở do việc chuyển

độ ng của camera

 Ta có dạng tổng quát của ảnh bị biến dạng:

g(x,y) = f(x,y)*h(x,y) + n(x,y)

Trang 46

Khôi phục ảnh

 Nhiễu muối tiêu

I2= imnoise(I1,'salt & pepper')

Trang 47

Khôi phục ảnh

 Nhiễu gaussian

t = imnoise(image,’gaussian’)

Trang 49

 Tìm các nơi đạo hàm bậc nhất của cường độ sáng

có biên độ hơn một ngưỡng

 Tìm các nơi đạo hàm bậc hai của cường độ sáng

có sự thay đổi qua mức 0

Trang 51

Tách biên ảnh

 Kết quả

Ngày đăng: 11/02/2020, 17:03

TỪ KHÓA LIÊN QUAN

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