XỬ LÝ ẢNH TRONG MIỀN KHÔNG GIAN

NGÔ QUỐC VIỆT TPHCM-2012

1. Các xử lý logic và số học trên ảnh

Các thao tác logic Trừ ảnh , trung bình ảnh 2. Các bộ lọc không gian cơ bản 3. Các bộ lọc không gian làm trơn ảnh

Bộ lọc tuyến tính làm trơn Các bộ lọc Order-Statistics

4. Các bộ lọc không gian làm nét ảnh 5. Các giải thuật khử nhiễu

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 2

 Thực hiện các phép logic giữa hai hoặc nhiều ảnh.

Cụ thể  NOT  OR  AND  XOR  SUB

c = a c = a + b c = a  b c = a  b = a  (b) + (a  b) c = a \ b = a – b = a  (b)

Chỉ cần 3 toán tử: AND, OR, NOT

 Mỗi thao tác thực hiện trên từng điểm ảnh

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 3

Gốc

Mặt nạ

AND

Gốc

Mặt nạ

OR

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 4

 Sử dụng các thao tác logic trên ma trận của OpenCV

int _tmain(int argc, _TCHAR* argv[]) {

//cvOr; cvNot; cvAdd; cvSub

IplImage *img1 = cvLoadImage(“..\\..\\images\\building.jpg"); IplImage *img2 = cvLoadImage(".\\..\\images\\black.jpg"); IplImage *img3, iplhdr; CvMat * mat1, * mat2, mat3, mathdr1, mathdr2; mat1 = cvGetMat(img1, &mathdr1); mat2 = cvGetMat(img2, &mathdr2); mat3 = *mat1; cvAnd(mat1, mat2, &mat3); img3 = cvGetImage(&mat3, &iplhdr); cvNamedWindow("Logics", CV_WINDOW_AUTOSIZE); cvShowImage("Logics", img3);

cvWaitKey(0); cvDestroyWindow("Logics:"); cvReleaseImage(&img1); cvReleaseImage(&img2); return 0;

}

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 5

 Thực hiện trên các pixel của ảnh xám Định nghĩa

Thao tác

Kiểu dữ liệu Output

ADD

c = a + b

Nguyên

SUB

c = a – b

Nguyên

MUL

c = a * b

Nguyên hoặc thực

DIV

c = a / b

Thực

LOG

c = log (a)

Thực

EXP

c = exp(a)

Thực

SQRT

c = sqrt(a)

Thực

TRIG

Thực

c = sin/cos/tan(a)

INVERT

c = (2b -1 ) - a

Nguyên

 Thường sử dụng toán tử SUB nhằm tách phần nổi

và nền

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 6

 Nhằm loại bớt phần “nền” ra khỏi ảnh cần phân tích

(y khoa, thiên văn, …)

Nguồn: R. F. Gonzalez & R.Wood

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 7

 Có thể ứng dụng để làm giảm nhiễu trong ảnh. Bằng cách lấy trung bình pixel từ các ảnh nhiễu (ngẫu nhiên, nhiệt, v.v) để tạo ra pixel cùng tọa độ trong ảnh output.

 Cho K ảnh nhiễu khác nhau, ảnh trung bình được

Hàm noise

xác định bởi

 Ảnh được làm rõ hơn bằng tạo ra K ảnh nhiễu (ngẫu nhiên, muối tiêu – thảo luận sau), và lấy trung bình các ảnh này.

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 8

 Trung bình của ảnh nhiễu tiến gần đến ảnh tốt f(x,y).

 Phương sai

Dùng các hàm

rand(): (rand()/(float)0x7fff)-0.5;

cvGetSize: lấy kích thước ảnh cvCloneImage: tạo ảnh mới

 K càng tăng  nhiễu sẽ giảm

cvGetReal2D: get pixel value cvSetReal2D: set pixel value

 Sinh viên hãy viết chương trình giảm nhiễu bằng kỹ

thuật “trung bình ảnh”

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 9

K = 8 noisy images

K = 16 noisy images

Gần giống với ảnh gốc

Ảnh bị nhiễu

K = 64 noisy images

K = 128 noisy images

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 10

 Dựa trên cáp phép toán về tích chập (convolution) trên

lân cận của từng pixel.

Phép toán chập là trung tâm của hầu hết xử lý trên ảnh

 Lân cận vuông của một pixel sẽ được thực hiện chập với subimage cùng kích thước để tạo ra giá trị mới của pixel đang xét.

 Subimage gọi là: filter (bộ lọc), mask (mặt nạ), kernel (nhân chập), template (mẫu chập), hay window (cửa sổ chập).

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 11

 Filter/Mask được di chuyển từng pixel trên ảnh và thực hiện chập để tạo ra giá trị điểm ảnh mới  Hình ảnh thể hiện

cơ chế lọc

12 Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt

 Liên tục: Tích chập của 2 hàm f(x) và h(x) được định

nghĩa bởi:

 Rời rạc:

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 13

 Liên tục: Tích chập của 2 hàm f(x) và h(x) hai chiều

được định nghĩa bởi:

 Rời rạc

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 14

 Kích thước kernel mxn, ảnh kích thước MxN, tích

chập được định nghĩa bởi

 Thông thường, nhân chập có dạng vuông (m=n),

với m và n là số lẻ.

 Chú ý: tâm của nhân chập thường ở giữa cửa cổ

chập.

 Tại một vị trí bất kỳ, pixel đích sẽ bằng tổng các tích giữa pixel nguồn với các phần tử tương ứng trong nhân

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 15

 Tích chập giữa f(M1xN1) và nhân h(M2xN2) có thể tạo ra các ma trận có kích thước như sau, tùy thuộc vào kiểu chập.

 Giữ nguyên kích thước: M1xN1 (same convolution) :  Tăng kích thước

(full

(M1+M2-1)x(N1+N2-1)

convolution)

 Giảm kích thước:

(valid

(M1-M2+1)x(N1-N2+1)

convolution)

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 16

 Nhân chập h(j,k) là tách được nếu

 Khi đó, phép lọc có thể thực hiện theo cách sau

 Độ phức tạp khi tính toán trên mỗi điểm ảnh từ

O(J*K) giảm xuống O(J+K).

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 17

Giữ nguyên kích thước

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 18

Tăng kích thước Tâm ma trận chập nằm ngoài ảnh

Giảm kích thước Ma trận chập nằm gọn trong ảnh

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 19

for(int y = 0; y < height; ++y)

for(int x = 0; x < width; ++x)

{ {

sum = 0; for(int i = 0; i < kHeight-1; i++) { for(int j = 0; j < kWidth-1; j++) {

if((y+(i-kMiddleHeight)) < 0 || (y+(i-kMiddleHeight)) >= height

|| (x+(j-kMiddleWidth)) < 0 || (x+(j-kMiddleWidth)) >= width) { result = 0;

} else { result = input[y+(i-kMiddleHeight), x+(j-kMiddleWidth)] * kernel[I, j]; } sum += result;

}

} result[y, x] = sum;

}

}

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 20

 Sử dụng các nhân chập với các hệ số thay đổi có thể tạo ra các hiệu ứng khác nhau trên ảnh output. Một số hiệu ứng của lọc không gian  Làm trơn hoặc mờ ảnh: giảm nhiễu, giảm chi tiết nhỏ.  Làm nét ảnh  Phát hiện biên (trình bày chi tiết trong bài giảng sau)

 Các bộ lọc không gian thường có kích thước 3x3

hoặc 5x5. Một số trường hợp dùng ma trận 7x7

 Ngoài ra có thể sử dụng các lọc phi tuyến (thảo luận

trong “Xla_BaiGiang04”)

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 21

 Sử dụng bộ lọc không gian tuyến tính để tính giá trị pixel output là trung bình của các pixel trong nhân chập.

 Còn được gọi là bộ lọc trung bình hay lowpass filter.  Các bộ lọc “đều” có dạng chữ nhật hay tròn. Cụ thể

 Kết quả các cụm pixel nhỏ (nhỏ hơn kích thước nhân

chập) sẽ bị “hòa” vào các vùng pixel lớn hơn.

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 22

 Có thể dùng các bộ lọc biến thể khác để làm trơn

ảnh

 Mặt nạ thứ hai được gọi là lấy trung bình có trọng số. Nghĩa là các pixel sẽ được nhân với các hệ số khác nhau.

 Với trung bình có trọng số, pixel output được xác

định bởi

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 23

 Một số bộ lọc làm trơn ảnh khác: tam giác, Gauss, bộ lọc trên miền Fourier (thảo luận sau), các bộ lọc phi tuyến (trung vị, Kuwahara)

 Tam giác: là phép chập của hai bộ lọc đều đồng

nhất (đều chữ nhật hoặc đều tròn)

Dạng chóp

Dạng nón

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 24

 Kết quả làm trơn ảnh với bộ lọc trung bình có kích

thước 3, 5, 9, 15, 35

Ảnh gốc

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 25

 Có nhiều cách để tạo bộ lọc Gauss (tham khảo tài

liệu [1] trang 96-100).

 Bộ lọc Gauss là mờ/trơn ảnh

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 26

#include "highgui.h" #include "cv.h" void main() {

IplImage* src = cvLoadImage("lena.jpg", 1); IplImage* dst = cvCreateImage(cvGetSize(src),

src->depth, src->nChannels); cvSmooth(src, dst, CV_BLUR, 3, 3); cvNamedWindow("src", 1); cvShowImage("src", src); cvNamedWindow("dst", 1); cvShowImage("dst", dst); cvReleaseImage(&src); cvReleaseImage(&dst); cvWaitKey(0);

}

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 27

 Bộ lọc trung vị

 Giá trị điểm ảnh output trong nhân chập đang xét bằng giá trị độ sáng thứ (J*K)/2 trong phần ảnh đang được chập

 Một biến thể: thay vì lọc trung vị, có thể lọc phần trăm. Nghĩa là thay vì lấy 50% giá trị sáng mà bằng p% (từ 0% - lọc cực tiểu - đến 100% - lọc cực đại)

 Bộ lọc Kuwahara

 Cho phép giữ lại các “cạnh” trên ảnh trong quá

trình làm trơn.

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 28

, trung vị của dãy

 Trung vị: cho dãy {x1, x2, …, xn}

được xác định bởi

 Nhận xét:

min tại Med({xi}).

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 29

 Tìm trung vị trong phần ảnh đang xét (cửa sổ quét

qua)

 Gán giá trị cho pixel “tâm”.

 Ví dụ:

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 30

các xếp Sắp cường độ sáng trong lân cận của p.

p

median được gán cho pixel trí p vị tại trong ảnh output.

131 133 133 136 140 143 147 152 154 157 160 162 163 164 165 171

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 31

median

blurred

noisy

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 32

Ảnh nhiễu

3x3-blur x 1

3x3-median x 1  Lọc trung vị cho kết quả khử nhiễu tốt hơn so với

các bộ lọc làm trơn ảnh

 Lọc trung vị duy trì cạnh tốt hơn so với blurring

filter.

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 33

 Chia nhân chập thành các vùng con. Tính độ sáng

trung bình của mỗi vùng con.

 Chọn độ sáng trung bình nào có phương sai nhỏ nhất làm độ sáng của pixel trong nhân chập lớn đang xét

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 34

Giá

Bộ lọc Đều

Kiểu Miền Không gian Tuyến tính Vuông

Tách được Có

Đều Tam giác Tam giác

Không Có Không

Gauss

Trung vị Kuwahara

Không gian Tuyến tính Tròn Không gian Tuyến tính Vuông Không gian Tuyến tính Tròn Không gian Tuyến tính  Không gian Phi tuyến Không gian Phi tuyến

Vuông Không

Không Không

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 35

 Sinh viên sử dụng các hàm sau để thực hiện yêu cầu

làm trơn ảnh với các nhân chập khác nhau.

cvFilter2D: để thực hiện lọc ảnh (đổi nhân chập để làm

trơn ảnh)

cvSmooth: làm trơn ảnh với các nhân chập được định

nghĩa sẵn trong OpenCV)

Bài giảng Xử lý ảnh-TS. Ngô Quốc Việt 36