b) Hiển thị ảnh
  • Dùng hàm imview
– Để hiển thị một ảnh sử dụng hàm imview, dùng hàm imview, chỉ rõ ảnh mà ta muốn hiển thị. Ta có thể sử dụng imview để hiển thị một ảnh mà đã được nhập vào trong không gian làm việc của Matlab.
moonfig = imread('moon.tif'); 
imview(moonfig);

Ta cũng có thể chỉ định tên của file ảnh như trong ví dụ sau:
imview('moon.tif');
– File ảnh phải có mặt trong thư mục hiện tại hoặc trong đường dẫn của Matlab. Cấu trúc này có thể hữu ích cho việc quét qua nhiều ảnh. Tuy nhiên, lưu ý, khi sử dụng cấu trúc này, dữ liệu ảnh không được lưu trong không gian làm việc của Matlab.

– Nếu ta gọi hàm imview mà không chỉ ra mất kì tham số nào, nó sẽ hiển thị một hộp chọn file cho phép ta chỉ ra tên file muốn hiển thị.
  • Xem nhiều ảnh
– Nếu ta chỉ ra một file mà chứa nhiều ảnh, hàm imview chỉ hiển thị ảnh đầu tiên trong file đó. Để xem tất cả các ảnh trong file, sử dụng hàm imread để nhập mỗi ảnh vào trong không gian làm việc của Matlab sau đó gọi hàm imview nhiều lần để hiển thị mỗi ảnh riêng biệt.
  • Dùng hàm imshow
– Để xem ảnh, ta có thể sử dụng hàm imshow thay cho imview. Ta sử dụng imshow để hiển thị một ảnh đã được nhập vào trong không gian làm việc như ví dụ sau:
moon = imread('moon.tif');  
imshow(moon);
Ta cũng có thể chỉ ra tên của file ảnh như một tham số truyền vào cho hàm như ví dụ sau: imshow(‘moon.tif’);

Khi sử dụng cấu trúc này thì dữ liệu ảnh không được nhập vào trong không gian làm việc. Tuy nhiên, ta có thể mang ảnh vào trong không gian làm việc bằng cách sử dụng hàm getimage. Hàm này sẽ nhận dữ liệu ảnh từ handle của một đối tượng ảnh hiện tại. Chẳng hạn: moon = getimage; Sẽ gán dữ liệu ảnh từ moon.tif vào biến moon.

c) Các hàm chuyển đổi kiểu ảnh

– Với các thao tác nhất định sẽ thật hữu ích khi có thể chuyển đổi ảnh từ dạng này sang dạng khác. Chẳng hạn, nếu ta muốn lọc một màu ảnh được lưu trữ dưới dạng ảnh chỉ số đầu tiên ta nên chuyển đổi nó thành dạng ảnh RGB.
Khi ta áp dụng phép lọc tới ảnh RGB, Matlab sẽ lọc giá trị cường độ trong ảnh tương ứng. Nếu ta cố gắng lọc ảnh chỉ số, Matlab đơn giản chỉ áp đặt phép lọc tới ma trận ảnh chỉ số và kết quả sẽ không có ý nghĩa.
  • Chú ý: Khi chuyển đổi một ảnh từ dạng này sang dạng khác, ảnh kết quả có thể khác ảnh ban đầu. Chẳng hạn, nếu ta chuyển đổi một ảnh màu chỉ số sang một ảnh cường độ, kết quả ta sẽ thu được một ảnh đen trắng.

– Danh sách sau đây sẽ liệt kê các hàm được sử dụng trong việc chuyển đổi kiểu ảnh:

  • dither:  Tạo một  ảnh nhị phân từ một  ảnh cường  độ  đen trắng bằng cách trộn, tạo một ảnh chỉ số từ một ảnh RGB bằng cách trộn (dither).
  • gray2id: Tạo một ảnh chỉ số từ một ảnh cường độ đen trắng.
  • grayslice:  Tạo một  ảnh chỉ số từ một  ảnh cường độ  đen trắng bằng cách đặt ngưỡng.
  • im2bw:  Tạo một  ảnh nhị phân từ một  ảnh cường độ,  ảnh chỉ số hay  ảnh RGB trên cơ sở của ngưỡng ánh sáng.
  • ind2gray: Tạo một ảnh cường độ đen trắng từ một ảnh chỉ số.
  • ind2rgb: Tạo một ảnh RGB từ một ảnh chỉ số.
  • mat2gray: Tạo một ảnh cường độ đen trắng từ dữ liệu trong một ma trận bằng cách lấy tỉ lệ giữ liệu.
  • rgb2gray:  Tạo một ảnh cường độ đen trắng từ một ảnh RGB.
  • rgb2ind: Tạo một ảnh chỉ số từ một ảnh RGB.

– Ta cũng có thể thực hiện các phép chuyển đổi kiểu chỉ sử dụng cú pháp của Matlab. Chẳng hạn, ta có thể chuyển đổi một ảnh cường độ sang ảnh RGB bằng cách ghép nối 3 phần copy của ma trận ảnh gốc giữa 3 chiều:
RGB=cat(3,I,I,I );

– Ảnh RGB thu được có các ma trận đồng nhất cho các mặt phẳng R, G, B vì vậy ảnh hiển thị giống như bóng xám.
– Thêm vào những công cụ chuyển đổi chuẩn đã nói ở trên, cũng có một số hàm mà trả lại kiểu ảnh khác như một phần trong thao tác mà chúng thực hiện.
  • Chuyển đổi không gian màu
– Toolbox xử lý ảnh biểu diễn màu sắc như các giá trị RGB ( trực tiếp trong ảnh RGB hoặc gián tiếp trong ảnh chỉ số ). Tuy nhiên, có các phương pháp khác cho việc biểu diễn màu sắc. Chẳng hạn, một màu có thể được đại diện bởi các giá trị hue, saturation và các giá trị thành phần (HSV). Các phương pháp khác cho việc biểu diễn màu được gọi là không gian màu.
– Toolbox cung cấp một tập các thủ tục để chuyển đổi giữa các không gian màu. Các hàm xử lý ảnh tự chúng coi dữ liệu màu sắc dưới dạng RGB tuy nhiên, ta có thể xử lý một ảnh mà sử dụng các không gian màu khác nhau bằng cách chuyển đổi nó sang RGB sau đó chuyển đổi ảnh đã được xử lý trở lại không gian màu ban đầu.

d) Chuyển đổi định dạng các file ảnh 
– Để thay đổi định dạng đồ hoạ của một ảnh, sử dụng hàm imread để đọc một ảnh và sau đó lưu nó với hàm imwrite đồng thời chỉ ra định dạng tương ứng.
– Để minh hoạ, ví dụ sau đây sử dụng hàm imread để đọc một file BMP vào không gian làm việc.Sau đó, hàm imwrite lưu ảnh này dưới định dạng PNG
bitmap = imread('mybitmap.bmp','bmp');  
imwrite(bitmap,'mybitmap.png','png');

e) Số học ảnh

– Số học ảnh sự ứng dụng của các phép toán số học chuẩn như: cộng, trừ, nhân, chia lên ảnh. Số học ảnh được sử dụng nhiều trong xử lý ảnh trong cả các bước ban đầu lẫn các thao tác phức tạp hơn. Chẳng hạn, trừ ảnh có thể được sử dụng để phát hiện sự khác nhau giữa hai hoặc nhiều ảnh của cùng một cảnh hoặc một vật.
– Ta có thể thực hiện số học ảnh sử dụng các toán tử số học của Matlab.
Toolbox xử lý ảnh bao gồm một tập hợp các hàm ứng dụng các phép toán số học trên tất cả các con số không lấp đầy. Hàm số học của toolbox chấp nhận bất kì kiểu dữ liệu số nào bao gồm uint8, uint16 hay double và trả lại ảnh kết quả trong cùng định dạng. Các hàm thực hiện các phép toán với độ chính xác kép trên từng phần tử nhưng không chuyển đổi ảnh tới giá trị chính xác kép trong không gian làm việc của Matlab. Sự tràn số được điều khiển tự động. Hàm sẽ cắt bỏ giá trị trả về để vừa với kiểu dữ liệu.
  • Luật cắt bỏ trong số học ảnh
– Kết quả của số học nguyên có thể dễ dàng tràn số dùng cho lưu trữ. Chẳng hạn, giá trị cực đại ta có thể lưu trữ trong uint8 là 255. Các phép toán số học có thể trả về giá trị phân số – không được biểu diễn bởi một chuỗi số nguyên.
– Các hàm số học ảnh sử dụng những luật này cho số học nguyên:

+ Giá trị vượt quá khoảng của kiểu số nguyên bị cắt bỏ tới khoảng đó
+ Giá trị phân số được làm tròn Chẳng hạn, nếu dữ liệu có kiểu uint8, kết quả trả về nếu lớn hơn 255 ( bao gồm Inf ) thì được gán là 255.
Lời gọi lồng nhau tới hàm số học ảnh

– Ta có thể sử dụng các hàm số học ảnh kết hợp để thực hiện một chuỗi các phép toán. Chẳng hạn để tính giá trị trung bình của hai ảnh:
C=(A+B) /2
Ta có thể nhập vào như sau:

I = imread('rice.png');  
I2 = imread('cameraman.tif');  
K = imdivide(imadd(I,I2), 2); % not recommended
– Khi được sử dụng với kiểu uint8 hay uint16, mỗi hàm số học cắt kết quả của nó trước khi truyền nó cho hàm thiếp theo. Sự cắt bỏ này có thể giảm đáng kể lượng thông tin trong ảnh cuối cùng. Một cách làm tốt hơn để thực hiện một chuỗi các tính toán là sử dụng hàm imlincomb. Hàm này thi hành tất cả các phép toán số học trong sự kết hợp tuyến tính của độ chính xác kép và chỉ cắt bỏ kết quả cuối cùng:
K = imlincomb(.5,I,.5,I2); % recommended
  • Biến đổi không gian ảnh
Biến đổi không gian ảnh là thực hiện ánh xạ giữa vị trí các pixel trong ảnh vào với các pixel trong ảnh ra.
  • Bảng thuật ngữ

Aliasing : Răng cưa – xuất hiện khi giảm kích thước ảnh. Khi kích thước của một ảnh bị giảm, các pixel gốc bị lấy mẫu giảm để tạo ra ít pixel hơn. Aliasing xảy ra như kết quả của việc giảm kích thước ảnh thường xuất hiện dưới dạng bậc thang ( đặc biệt trong các ảnh có độ tương phản cao )

Antialiasing : Các biện pháp chống răng cưa cho ảnh

Bicubic interpolation : Giá trị của các pixel ra được tính toán từ giá trị trung bình của 4×4 pixel lân cận 
Bilinear interpolation : Gía trị của pixel ra được tính toán từ giá trị trung bình của 2×2 pixel lân cận

Geometric operation : Một thao tác sửa đổi quan hệ hình học gữa các pixel trong một ảnh. Chẳng hạn thay đổi kích thước ảnh, quay ảnh và xén ảnh

Interpolation : Quá trình được sử dụng để ước lượng giá trị ảnh ở một vị trí giữa các pixel

Nearest-neighbor interpolation : Các giá trị pixel ra được gán giá trị của pixel nằm trong một vùng gần pixel đó.

  •  Nội suy
Nội suy là quá trình sử dụng để ước lượng một giá trị ảnh ở một vị trí giữa các pixel. Chẳng hạn, nếu ta thay đổi kích thước một ảnh, nó sẽ chứa nhiều pixel hơn ảnh gốc, toolbox sử dụng sự nội suy để tính giá trị cho các pixel thêm vào. Hàm imresize và imrotate sử dụng nội suy hai chiều để thực hiện thao tác của mình. Hàm improfile cũng sử dụng sự nội suy hoá.
Các phương pháp nội suy

– Toolbox sử lý ảnh cung cấp 3 cách nội suy hoá
+ Nội suy các pixel gần nhất ( nearest –neighbor interpolation )
+ Nội suy song tuyến tính ( Bilinear interpolation )
+ Nội suy song khối ( Bicubic interpolation )
Các phương pháp nội suy làm việc theo một cách giống nhau. Trong mỗi trường hợp, để tính giá trị của một pixel đã được nội suy, chúng tìm điểm trong ảnh ra mà pixel nằm tại đó. Sau đó, chúng gán một giá trị tới các pixel ra bằng cách tính toán giá trị trung bình có trọng số của một số pixel lân cận. Trọng số dựa trên cơ sở khoảng cách tới điểm đang xét.
– Các phương pháp này khác nhau ở tập các pixel mà chúng xem xét:

+ Với nội suy các pixel gần nhất: pixel ra được gán giá trị của các pixel ở gần nó nhất. Các pixel khác không được xem xét.

+ Nội suy song tuyến tính, giá trị của pixel ra là giá trị trung bình theo trọng số của 2×2 pixel lân cận.

+ Nội suy song khối: giá trị của pixel ra là trung bình có trọng số của 4×4 pixel lân cận.
Số lượng các pixel được xem xét ảnh hưởng đến độ phức tạp tính toán. Vì vậy, phương pháp song tuyến tính mất nhiều thời gian hơn phương pháp thứ nhất và
phương pháp song khối mất nhiều thời gian hơn song tuyến tính. Tuy nhiên, số lượng pixel lớn hơn, độ chính xác sẽ tốt hơn.

0 nhận xét:

Lập trình C++

Chế tạo robot

Học AutoCAD

Hướng dẫn cài đặt Matlab 2014+15+16

Matlabthayhai. Powered by Blogger.

Video

Khóa học ##Anh văn cho người mất gốc

Lập trình Android toàn tập

Lập trình WinForm với C#: 10 ứng dụng

Lập trình Kotlin toàn tập

Thiết kế Web chuẩn SEO bằng Wordpress cho người mới