Bài giảng Xử lý ảnh số - Chương 2: Một số xử lý cơ bản trên miền không gian - Ngô Quốc Việt

Điểm ảnh hay còn gọi là pixel (picture element, pels,
image elements) được xem như là dấu hiệu hay
cường độ sáng tại một toạ độ trong không gian của
đối tượng.
 Ảnh được xem như là một tập hợp các điểm ảnh.
Khi được số hoá, được biểu diễn là ma trận 2 chiều
a[i][j] trong đó mỗi phần tử có một giá trị nguyên
hoặc là một véc tơ cấu trúc màu 
pdf 60 trang thiennv 09/11/2022 3540
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Xử lý ảnh số - Chương 2: Một số xử lý cơ bản trên miền không gian - Ngô Quốc Việt", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

File đính kèm:

  • pdfbai_giang_xu_ly_anh_so_chuong_2_mot_so_xu_ly_co_ban_tren_mie.pdf

Nội dung text: Bài giảng Xử lý ảnh số - Chương 2: Một số xử lý cơ bản trên miền không gian - Ngô Quốc Việt

  1. Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 11
  2. Một điểm ảnh p tại tọa độ (x, y) có . 4-lân-cận-ngang-và-dọc của p x (x+1, y), (x-1, y), (x, y+1), (x, y-1) x p x N4(p) x . 4-lân-cận-chéo (Diagonal) của p x x (x+1, y+1), (x+1, y-1), p ND(p) (x-1, y+1), (x-1, y-1) x x x x x . 8-lân-cận của p: là sự kết hợp của x p x N8(p) N4(p) và ND(p) x x x Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 12
  3. 4-liền-kề: Hai điểm ảnh p và q là 4-liền-kề nếu q thuộc tập N4(p). 8-liền-kề: Hai điểm ảnh p và q là 8-liền-kề nếu q thuộc tập N8(p). Ví dụ: 0 1 1 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 1 Các điểm ảnh 4-liền-kề 8-liền-kề Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 13
  4. #include "stdafx.h“ #include #include #include int _tmain(int argc, _TCHAR* argv[]) { // Open the file. IplImage *img = cvLoadImage("building.jpg"); if (!img) { printf("Error: Couldn't open the image file.\n"); return 1; } // Display the image. cvNamedWindow("Image:", CV_WINDOW_AUTOSIZE); cvShowImage("Image:", img); // Wait for the user to press a key in the GUI window. cvWaitKey(0); // Free the resources. cvDestroyWindow("Image:"); cvReleaseImage(&img); return 0; } Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 14
  5. Enhancement Input image Input image technique Miền không gian Miền tần số Xử lý trực tiếp trên pixel Xử lý trên biến đổi Fourier của ảnh Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 15
  6. Thay đổi giá trị không phụ thuộc vào tọa độ các điểm ảnh Tăng giảm độ sáng, thống kê tần suất, biến đổi tần suất , âm bản, biến đổi log, v.v. Sử dụng biểu đồ tần suất, còn gọi là histogram. Tần suất mức xám g của ảnh I là số điểm ảnh có giá trị g. Histogram là biểu đồ các mức xám có trong ảnh. Ví dụ cho ảnh I, histogram h(g) của I là: Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 16
  7. “Trắng” chuyển thành ”đen” và ngược lại Ảnh âm của ảnh I có [0,L-1] mức xám được xác định bởi, với r là mức xám cụ thể: s L 1 r Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 17
  8. int main(int argc, char argv) { const char* imagename = argc > 1 ? argv[1] : "lena.jpg"; IplImage* img = 0; int h, w, step, channels, i, j, k; uchar *data; img = cvLoadImage(imagename, CV_LOAD_IMAGE_UNCHANGED); h = img->height; w = img->width; step = img->widthStep; channels = img->nChannels; data = (uchar *)img->imageData; //transforming to negative for(i=0; i<h; i++) for(j=0; j<;w; j++) for(k=0; k<channels; k++) data[i*step+j*channels+k] = 255 - data[i*step+j*channels+k]; cvNamedWindow("OpenCV", CV_WINDOW_AUTOSIZE); cvShowImage("OpenCV", img); cvWaitKey(0); cvReleaseImage(&img); return 0; } Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 18
  9. Nhằm giãn các mức xám thấp của ảnh input có được mức xám cao hơn. Nhằm làm cho bớt tối. Mức xám s mới được xác định bởi s clog(1 r) Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 19
  10. Power-law: s cr  , hoặc s c(r  ) . Với c,  là hằng dương . Dùng  cho trường hợp r=0. Thay đổi giá trị  sẽ tạo ra nhiều hiệu ứng. Còn gọi là hiệu chỉnh gamma (gamma correction) trên ảnh. Gamma correction rất quan trọng trong tạo ảnh trung thực trên màn hình. Sinh viên đọc thêm “Digital Image Processing-3rd Edition” của Rafael C. Gonzalez từ 130-137. Thực hiện với openCV những biến đổi này. Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 20
  11. Gamma correction với gamma = 1, 0.7, 0.4, 0.1 Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 21
  12. Bằng cách tăng miền động (dynamic range) mức xám của ảnh. Ánh xạ miền mức xám sang miền mới theo nguyên tắc nhất định. r: mức xám cũ; s: mức xám mới. (ri, si) điều khiển dáng của biến đổi. Nguồn: Digital Image Processing-Rafeal C. Gonzalez) Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 22
  13. Nếu r1=r2 và s1=0, s2=L-1 thì chuyển sang ảnh nhị phân. Nếu (r1, s1)=(rmin, 0) và (r2, s2)=(rmax, L-1) thì kéo dãn miền xám của ảnh sang toàn bộ miền xám [0, L-1] (r1, s1)=(rmin, 0) và (r2, s2)=(rmax, L-1) r1=r2=(rmax-rmin)/2 Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 23
  14. Lát cắt vùng xám (gray-level slicing): làm sáng một miền xám xác định trên ảnh. Mong muốn làm sáng một số đối tượng trên ảnh. Tăng mọi mức xám trong miền cụ thể, và làm giảm các mức xám khác. Lát cắt bit-plane (bit-plane slicing): xử lý trên từng bit của điểm ảnh (giả sử dùng 8-bit cho điểm ảnh gray scale). Có thể dùng trong image compression. Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 24
  15. Hình dạng histogram thể hiện độ sáng (brightness) của ảnh Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 25
  16. Hình dạng histogram thể hiện độ tương phản (contrast) của ảnh Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 26
  17. Dùng để tăng độ tương phản toàn cục của ảnh. Những vùng có tương phản thấp sẽ được cải thiện Thay đổi cường độ xám của từng pixel để có được ảnh mới có histogram chuẩn hơn. Cần một hàm biến đổi trên mức xám. Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 27
  18. Ảnh I được gọi là cân bằng "lý tưởng" nếu với mọi mức xám g, g’ ta có h(g) = h(g’). Nghĩa là các mức xám trong ảnh có số lượng pixel “tương đương” nhau. n n j Nghĩa là: i ,  i j n n với ni là số pixel có mức xám i, và nj số pixel có mức xám j, n là tổng số pixel có trong ảnh. Tuy nhiên, không tự nhiên để cân bằng “lý tưởng” Tạo ra một phân phối xác suất trên biến ngẫu nhiên mức xám và chuẩn hóa phân phối này Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 28
  19. Cân bằng histogram là phương pháp tiếp cận để xác định một hàm biến đổi T(.) giá trị độ sáng phân bố đồng đều (uniformly distributed) trong khoảng [0,1]. Giả sử ảnh đầu vào có độ sáng liên tục [0, 1], với r=0 cho màu đen và r = 1 cho màu trắng Cần xác định một hàm biến đổi s = T(r), trên histogram ảnh đầu vào Kỹ thuật “cân bằng histogram” có thể cải thiện chất lượng ảnh tự động mà không cần làm thủ công với chức năng co/giãn mức xám. Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 29
  20. Phần trình bày sau chỉ là một cách cân bằng histogram. T(r) là hàm đơn điệu tăng ánh xạ từ [0,1] vào [0,1] (miền mức xám đã chuẩn hóa). Chọn T đơn điệu tăng đảm bảo cho pixel có cường độ cao hơn pixel khác vẫn giữ nguyên tính chất đó trong ảnh đầu ra Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 30
  21. Dựa trên lý thuyết xác suất với pin(r) và pout(s) lần lượt là hàm mật độ mức sáng trên ảnh đầu vào và đầu ra Mục tiêu là thực hiện biến đổi sao cho pout(s) “tiến tới” phân phối chuẩn. Nghĩa là đạt cực đại ở giữa lược đồ và giảm đều về hai bên. -1 Nếu pin(r) và T(r) biết trước, và r T (s) tăng đơn điệu, theo lý thuyết xác suất có thể viết : dr pout (s) pin (r) ds r T 1 (s) Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 31
  22. Một cách để nâng cao chất lượng ảnh là tìm T(.) sao cho mức sáng của ảnh đầu ra có phân bố đồng đều trên [0, 1]. Nghĩa là, ảnh ouput có mức xám “như nhau”. Xét biến đổi (đây chỉ là một trong các loại hàm dùng cho histogram) r s T(r) p (w)dw, 0 r 1 in 0 Đây là tổng của hàm mật độ (cumulative distribution function -CDF ) của p (r). ds in Suy ra p (r) dr in Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 32
  23. Histogram ảnh đầu ra được xác định 1 pout (s) pin (r) 1r T 1 (s) 1, 0 s 1 p (r) 1 in r T (s) Hàm mật độ là đồng đều cho mọi ảnh đầu vào Sử dụng hàm biến đổi CDF trên ảnh histogram đầu vào, ta có được ảnh đầu ra với mức xám đồng đều Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 33
  24. Xét ảnh xám {x} và đặt ni là số lần xuất hiện của mức xám i. Xác suất xuất hiện pixel có mức xám i trong ảnh là (n là tổng pixel, L là tổng mức xám, px(i) là histogram cho mức xám I đã chuẩn hóa [0, 1]. ni px (i) p(x i) ,0 i L n i Đặt hàm tổng mật độ là cdfx (i)  px ( j) j 0 Mong muốn xây dựng biến đổi y =T(x) tạo ra ảnh {y}, sao cho cdf là tuyến tính trên miền giá trị. Nghĩa là: cdf y (i) iK y T(x) cdfx (x) y' y.(max{x} min{x}) min{x} Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 34
  25. Cho ảnh N mức xám. Hãy cân bằng histogram về M mức xám (M có thể khác N) B1: tính pin(k) cho N mức xám k B2: tính CDF cho các N mức xám. s(k)  pin (k) i 0 B3: lập bảng thay thế: T(k)=round(s(k)*(M-1)) B4: với mỗi điểm ảnh có mức xám k, thay thế bằng điểm ảnh có mức xám T(k) Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 35
  26. Xét ảnh 8 mức xám kích thước 64 x 64 với các mức sáng (0, 1, , 7). Mức sáng chuẩn hóa là (0, 1/7, 2/7, , 1). Histogram chuẩn hóa như sau Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 36
  27. k Sử dụng hàm sau để xác định: sk T(rk )  pin (rj ) j 0 Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 37
  28. Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 38
  29. Biến đổi mức sáng giữa ảnh cũ và mới IN 0 1/7 2/7 3/7 4/7 5/7 6/7 7/7 OUT 1/7 3/7 5/7 6/7 6/7 1 1 1 Ảnh output có histogram Nhận xét: Histogram của ảnh đầu ra chỉ là xấp xỉ không hoàn toàn đồng đều. Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 39
  30. Tạo mảng chứa thông tin histogram . CvHistogram* hist = cvCreateHist(1, &hist_size, CV_HIST_ARRAY); Tính histogram trên ảnh xám . cvCalcHist( &gray_img, hist, 0, NULL ); Chuẩn hóa histogram . cvNormalizeHist(hist, 255); Cân bằng histogram . cvEqualizeHist(img, result) Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 40
  31. I = imread('Image_0_01.tif'); J = histeq(I); imshow(I); figure, imshow(J); Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 41
  32. Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 42
  33. m_equalization Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 43
  34. Xét ảnh Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 44
  35. Histogram của ảnh trên (đếm pixel có cùng mức xám) Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 45
  36. CDF của histogram là: Min trong ảnh là 52 và max là 154. Cdf được chuyển sang miền [0, 255] bởi Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 46
  37. cdf (v) cdfmin h(v) round (L 1) MxN cdf min Xét ảnh ví dụ cdf (v) 1 h(v) round 255 63 1 Ví dụ, pixel mức xám 78 46 1 h(78) round 255 182 63 1 Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 47
  38. Ảnh cân bằng histogram là: Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 48
  39. Cho ảnh I kích thước mxn=N. Gọi new_levels là số mức xám mong muốn của ảnh được cân băng histogram N Đặt: tb new_ levels g Đặt: t(g) h(i) i 0 là số điểm ảnh có mức xám thấp hơn hay bằng g. Xác định hàm f: g f(g), sao cho : t(g) f (g) max(0,round 0, 1 tb Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 49
  40. Chọn new_levels = 4 Ảnh sau khi cân bằng là Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 50
  41. void histeq(IplImage* src, IplImage* dst) { IplImage* hsv, * h, * s, * v; if (src->nChannels == 3) { hsv = cvCreateImage(cvGetSize(src), 8, 3); h = cvCreateImage(cvGetSize(src), 8, 1); s = cvCreateImage(cvGetSize(src), 8, 1); v = cvCreateImage(cvGetSize(src), 8, 1); cvCvtColor(src, hsv, CV_BGR2HSV); cvSplit(hsv, h, s, v, NULL); cvEqualizeHist(v, v); cvMerge(h, s, v, NULL, hsv); cvCvtColor(hsv, dst, CV_HSV2BGR); } else if (src->nChannels == 1) cvEqualizeHist(src, dst); if (hsv) cvReleaseImage(&hsv); if (h) cvReleaseImage(&h); if (s) cvReleaseImage(&s); if (v) cvReleaseImage(&v); } Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 51
  42. #include "cv.h“ #include "highgui.h“ int main(int argc, char argv) { IplImage* src = cvLoadImage(argc == 2 ? argv[1] : "img/lena.jpg", 1); IplImage* dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels); histeq(src, dst); cvShowImage("src", src); cvShowImage("dst", dst); cvWaitKey(0); return 0; } Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 52
  43. Xác định hình dáng của histogram và thực hiện nâng cấp ảnh thay vì sử dụng cân bằng histogram. Ví dụ sử dụng histogram của ảnh khác thực hiện cho ảnh đang xét. Được gọi là “histogram matching” hay “histogram specification” Có thể được dùng để chuẩn hóa hai ảnh Ý tưởng: Cho hai ảnh, tham chiếu và ảnh đích, tính histogram của chúng. Tính cumulative functions của hai histogram-gọi là F1() và F2(). Với mỗi mức xám G1, tìm mức xám G2 sao cho F1(G1) và F2(G2). Hàm histogram matching: M(G1) = G2. Áp hàm M() lên mỗi pixel của ảnh tham chiếu. Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 53
  44. Target Reference Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 54
  45. Histogram của hai ảnh Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 55
  46. CDF của hai ảnh Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 56
  47. Adjusted 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 0 0 0 0 0.05 0.15 0.23 0.29 0.38 0.42 0.46 0.55 0.62 0.66 0.72 1 0.04 0.17 0.30 0.42 0.54 0.63 0.70 0.76 0.79 0.88 0.91 1 1 1 1 1 Refrence Hist equal 0 0 0 0 1 2 3 4 6 6 7 8 9 10 11 15 0 0 0 0 0 1 1 2 3 3 3 4 5 5 6 15 Hist match Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 57
  48. Ảnh kết quả sau khi thực hiện histogram matching trên ảnh ‘to be adjusted’ với histogram lấy từ ảnh ‘reference’ Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 58
  49. Hãy viết chương trình OpenCV nhằm thực hiện: Chuyển ảnh xám sang trắng đen Co giãn độ tương phản Làm sáng đối tượng thông qua kỹ thuật gray-level slicing Hiển thị các bit plane của ảnh xám sang các cửa sổ khác Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 59
  50. Một số khái niệm cơ bản về ảnh (mức xám, ảnh màu, lân cận) Các khái niệm cơ bản về xử lý ảnh (điểm, cục bộ, toàn cục) Các xử lý không phụ thuộc tọa độ: contrast stretch. Cân bằng histogram trên ảnh xám thông qua tuyến tính hóa hàm CDF của các mức xám. Minh họa cân bằng histogram trêm miền [0,1] và [0,255]. Bài giảng Xử lý ảnh - TS. Ngô Quốc Việt 60