Bài giảng Maple - Lập trình tính toán: Chương 5 - Cơ bản về xử lý ảnh số trong Matlab trình bày về các kiểu hình ảnh trong Matlab (ảnh chỉ số, ảnh độ sáng, ảnh nhị phân, ảnh RGB, chuyển đổi giữa các kiểu ảnh); đọc và ghi dữ liệu ảnh; các phép toán số học cơ bản trên ảnh; hàm hiển thị hình ảnh; phép biến đổi hình học.
Chương Cơ xử lý ảnh số Matlab 5.1 Giới thiệu Trong Matlab, hình ảnh thường biểu diễn ma trận hai chiều Mỗi phần tử ma trận tương ứng với pixel (một phân tử ảnh – picture element – biểu diễn điểm hình) Điểm ảnh góc bên trái ứng với hàng 1, cột Matlab lưu giữ hình ảnh kiểu liệu sau: logical, uint8, uint16, double Người dùng sử dụng phép tốn thao tác ma trận để tác động lên liệu hình ảnh với điều kiện thao tác chấp nhận kiểu liệu 25/05/2014 Lập trình tính tốn 5.2 Các kiểu hình ảnh Matlab Ảnh số (indexed images) Ảnh biểu diễn hai ma trận: - Ma trận liệu X: thuộc kiểu uint8, uint16 double - Ma trận màu (bản đồ màu) map: kích thước m×3, phần tử có kiểu double có giá trị thuộc khoảng [0,1] Mỗi hàng ma trận xác định thành phần red, green, blue tổng số m màu sử dụng ảnh Giá trị phần tử ma trận liệu cho biết màu điểm ảnh màu nằm hàng ma trận màu 25/05/2014 Lập trình tính tốn 5.2 Các kiểu hình ảnh Matlab (tt.) Ảnh số (indexed images) (tt.) X(143,219) = 124 map(124,:) = 0.8392 0.9373 25/05/2014 Lập trình tính tốn 1.0000 5.2 Các kiểu hình ảnh Matlab (tt.) Ảnh độ sáng (intensity images) Ảnh biểu diễn ma trận hai chiều, giá trị phần tử cho biết độ sáng (hay mức xám) điểm ảnh - Ma trận thuộc kiểu uint8, uint16 double - Giá trị nhỏ (0) ứng với màu đen - Giá trị lớn (255 65535 tùy kiểu liệu uint8, uint16 hay double) ứng với màu trắng Ảnh biểu diễn theo kiểu gọi ảnh “trắng đen” ảnh grayscale 25/05/2014 Lập trình tính tốn 5.2 Các kiểu hình ảnh Matlab (tt.) Ảnh độ sáng (intensity images) (tt.) I(143,219) = 0.9151 25/05/2014 Lập trình tính tốn 5.2 Các kiểu hình ảnh Matlab (tt.) Ảnh nhị phân (binary images) Ảnh biểu diễn ma trận hai chiều, thuộc kiểu logical - ứng với màu đen - ứng với màu trắng BW(143,219) = 25/05/2014 Lập trình tính tốn 5.2 Các kiểu hình ảnh Matlab (tt.) Ảnh RGB (RGB images) Ảnh biểu diễn ma trận ba chiều m × n × - m × n: kích thước ảnh theo pixels - Ma trận định nghĩa thành phần màu red, green, blue cho điểm ảnh, phần tử thuộc kiểu uint8, uint16 hay double Ảnh biểu diễn theo kiểu gọi ảnh “truecolor” Các file ảnh thường sử dụng bit cho thành phần màu, nghĩa 24 bit cho điểm ảnh (khoảng 16 triệu màu) 25/05/2014 Lập trình tính tốn 5.2 Các kiểu hình ảnh Matlab (tt.) Ảnh RGB (RGB images) (tt.) RGB(143,219,1) = 0.8392 RGB(143,219,2) = 0.9373 RGB(143,219,3) = 1.0000 25/05/2014 Lập trình tính tốn 5.2 Các kiểu hình ảnh Matlab (tt.) Chuyển đổi kiểu ảnh Tên hàm dither gray2ind grayslice 25/05/2014 Mô tả Cú pháp dither(RGB,map) dither(I) Tạo ảnh nhị phân từ ảnh trắng đen I tạo ảnh indexed từ ảnh RGB ma trận màu map phương pháp dithering [X, map] = gray2ind(I,n) [X, map] = gray2ind(BW,n) Chuyển ảnh nhị phân BW ảnh intensity I thành ảnh indexed thông qua ma trận tuyến tính gray(n) X = grayslice(I,n) X = grayslice(I,v) Chuyển ảnh trắng đen I thành ảnh indexed X cách lấy ngưỡng Các giá trị ngưỡng xác định vector v n (khi giá trị ngưỡng 1/n, 2/n, …, (n-1)/n) Lập trình tính tốn 10 5.6 Các hàm hiển thị hình ảnh (tt.) Hàm imagesc: tương tự hàm image, trừ việc liệu ảnh co giãn (scale) để sử dụng tồn đồ màu hành Ví dụ: I = imread('eight.tif'); subplot(2,2,1); imagesc(I); axis([0 400 400]); colormap(gray); subplot(2,2,2); imagesc(100,100,I); axis([0 400 400]); colormap(gray); subplot(2,2,3); imagesc(I); 25/05/2014 Lập trình tính tốn 24 5.6 Các hàm hiển thị hình ảnh (tt.) Hàm imshow: tạo đối tượng đồ họa thuộc loại image hiển thị ảnh figure tự động thiết lập giá trị đối tượng image, axes figure để thể hình ảnh Sử dụng hàm trường hợp cần cơng cụ giải, hỗ trợ in ấn có sẵn figure Hàm imtool: hiển thị hình ảnh Image Tool, mơi trường tích hợp để hiển thị hình ảnh biểu diễn số tác vụ xử lý hình ảnh phổ biến 25/05/2014 Lập trình tính tốn 25 5.6 Các hàm hiển thị hình ảnh (tt.) Ví dụ: imshow('board.tif') imtool('board.tif') Hiển thị ảnh imshow 25/05/2014 Lập trình tính tốn Hiển thị ảnh imtool 26 5.7 Các phép biến đổi hình học Phép nội suy ảnh Nội suy trình ước lượng giá trị ảnh điểm nằm hai pixels có giá trị biết Các phương pháp nội suy: - Phương pháp lân cận gần (Nearest-neighbor interpolation): pixel gán giá trị pixel chứa điểm tương ứng ảnh ban đầu - Phương pháp song tuyến tính (Bilinear interpolation): pixel gán trung bình có trọng số pixel lân cận kích thước 2×2 25/05/2014 Lập trình tính tốn 27 5.7 Các phép biến đổi hình học (tt.) Phép nội suy ảnh (tt.) - Phương pháp bicubic (Bicubic interpolation): pixel gán trung bình có trọng số pixel lân cận kích thước 4×4 Phép nội suy sở để thực phép biến đổi hình học khác như: thay đổi kích thước ảnh, quay ảnh, 25/05/2014 Lập trình tính tốn 28 5.7 Các phép biến đổi hình học (tt.) Thay đổi kích thước ảnh >>B = imresize(A,m,method) Tạo ảnh B có kích thước gấp m lần ảnh gốc A Method: phương pháp nội suy dùng: ‘nearest’, ‘bilinear’, ‘bicubic’; mặc định ‘nearest’ >>B = imresize(A,[mrows mcols],method) mrows, mcols: số hàng, số cột ảnh 25/05/2014 Lập trình tính tốn 29 5.7 Các phép biến đổi hình học (tt.) Thay đổi kích thước ảnh (tt.) Ví dụ: [X,map] = imread('trees.tif'); [Y,newmap] = imresize(X,map,0.5); imshow(Y,newmap); imshow(X,map); 25/05/2014 Lập trình tính tốn 30 5.7 Các phép biến đổi hình học (tt.) Phép quay ảnh >>B = imrotate(A,angle,method,bbox) A: ảnh gốc angle: góc quay method: phương pháp nội suy, mặc định 'nearest' bbox: kích thước ảnh mới: 'crop' 'loose' Mặc định 'loose' (tăng kích thước cần) 25/05/2014 Lập trình tính tốn 31 5.7 Các phép biến đổi hình học (tt.) Phép quay ảnh (tt.) Ví dụ: [X,map] = imread('trees.tif'); I = ind2rgb(X,map); J = imrotate(I,45); K= imrotate(I,45,'crop'); imshow(I) imshow(J) imshow(K) 25/05/2014 Lập trình tính tốn 32 5.7 Các phép biến đổi hình học (tt.) Trích xuất ảnh Cách 1: >>X2 = imcrop(X,map,rect) %Ảnh indexed >>A2 = imcrop(A,rect) %Ảnh grayscale RGB rect = [xmin ymin width height] với (xmin,ymin) tọa độ góc bên trái phần ảnh cần trích, width height chiều rộng chiều cao phần ảnh cần trích 25/05/2014 Lập trình tính tốn 33 5.7 Các phép biến đổi hình học (tt.) Trích xuất ảnh (tt.) Cách 2: >>[X2,rect] = imcrop(X,map) %Ảnh indexed >>[A2,rect] = imcrop(A) %Ảnh grayscale RGB Dùng trỏ chuột để chọn phần ảnh cần trích xuất Ví dụ: [I2,rect]=imcrop(I) imshow(I) imshow(I2) 25/05/2014 Lập trình tính tốn 34 5.7 Các phép biến đổi hình học (tt.) Phép biến đổi hình học tổng quát >>B = imtransform(A,TFORM,interp) >>[B,XData,YData]=imtransform( ,param1,val1,param2,val2, ) interp: phương pháp nội suy (XData,YData): vị trí ảnh B hệ trục X-Y TFORM: cấu trúc phép biến đổi, xác định cách sử dụng hàm maketform cp2tform 25/05/2014 Lập trình tính tốn 35 5.7 Các phép biến đổi hình học (tt.) Phép biến đổi hình học tổng quát (tt.) Hàm maketform: >>T = maketform(TFORM_type, ) TFORM_type: dạng cấu trúc biến đổi hình học: 'affine', 'projective', 'custom', box', 'composite' 25/05/2014 Lập trình tính tốn 36 5.7 Các phép biến đổi hình học (tt.) Phép biến đổi hình học tổng quát (tt.) Hàm cp2tform: >>T = cp2tform(input_points,base_points,TFORM_type,order) input_points, base_points: ma trận M×2 xác định tọa độ (X,Y) M điểm điều khiển ảnh biến đổi ảnh gốc TFORM_type: 'affine', 'linear conformal', 'projective' 'polynomial', 'piecewise linear', 'lwm' Nếu 'polynomial' cần cung cấp thêm thơng số order cho biết bậc đa thức (mặc định 3) 25/05/2014 Lập trình tính tốn 37 5.7 Các phép biến đổi hình học (tt.) Phép biến đổi hình học tổng quát (tt.) Ví dụ: T = maketform('affine',[1 0; 0; 0 1]); J = imtransform(I,T); imshow(I), figure, imshow(J) 25/05/2014 Lập trình tính tốn 38 ... đen” ảnh grayscale 25/ 05/ 2014 Lập trình tính tốn 5. 2 Các kiểu hình ảnh Matlab (tt.) Ảnh độ sáng (intensity images) (tt.) I(143,219) = 0.9 151 25/ 05/ 2014 Lập trình tính tốn 5. 2 Các kiểu hình ảnh Matlab. .. 25/ 05/ 2014 Lập trình tính tốn 25 5.6 Các hàm hiển thị hình ảnh (tt.) Ví dụ: imshow('board.tif') imtool('board.tif') Hiển thị ảnh imshow 25/ 05/ 2014 Lập trình tính tốn Hiển thị ảnh imtool 26 5. 7... kiểu liệu 25/ 05/ 2014 Lập trình tính tốn 5. 2 Các kiểu hình ảnh Matlab Ảnh số (indexed images) Ảnh biểu diễn hai ma trận: - Ma trận liệu X: thuộc kiểu uint8, uint16 double - Ma trận màu (bản đồ màu)