You are here
Home > Lập Trình > Tự Học Matlab > Matlab Nâng Cao > Xử Lý Ảnh Matlab > Xử Lý Ảnh Matlab – Biểu Đồ Histogram Của Ảnh

Xử Lý Ảnh Matlab – Biểu Đồ Histogram Của Ảnh

ve bieu do Histogram trong matlab

Xử Lý Ảnh Matlab – Biểu Đồ Histogram Của Ảnh

Trong bài viết này tôi và bạn cùng nhau tìm hiểu đến Histogram xem nó là gì cũng như là ứng dụng của nó để làm gì?

ve bieu do Histogram trong matlab
ve bieu do Histogram trong matlab

| Biểu đồ Histogram là gì?

Biểu đồ Histogram của một bức ảnh là biểu đồ biểu diễn sự phân bố của các mức cường độ xám của một bức ảnh.

histogram matlab
histogram matlab

Ví dụ: Bạn có  một bức ảnh xám có kích thước là Width là 200px và Height là 200px. Vậy ta có số điểm ảnh là 200 x 200 bằng 40000 điểm ảnh. Vậy thị trong 40000 điểm ảnh này sẽ có các điểm ảnh có cường độ xám giống nhau. Giả sử dải bit của ảnh đó là từ 0 đến 255 chẳng hạn. Và ví dụ bit 0 có 100 điểm ảnh giống nhau, bit 1 có 150 điểm ảnh,… cho đến bit 255 là n điểm ảnh giống nhau. Và tổng các điểm ảnh của các bit này sẽ bằng 40000.

Vậy thì trong Matlab có một hàm đã được xây dựng sẵ đó là Histogram nó sẽ giúp bạn hiện thị biểu đồ sự phân bố của các cường độ sáng đó (Hiện thị các điểm ảnh giống nhau trên dải bit), nó giống như là biểu đồ thống kê thôi.

| Histogram hỗ trợ ảnh nào?

Thì đối với ảnh xám, Histogram sẽ hỗ trợ bạn vẽ biểu đồ hiện thị cường độ xám bình thường hoặc hiện thị được một mức ảnh nào đó.

Còn đối với ảnh màu thì nó có nhiều dải màu khác nhau (nhiều kênh) cho nên Histogram không hỗ trợ. Chính vì điều này thì đối với ảnh màu thì trong lập trình ta phải lập trình phân biệt được đây là ảnh màu. Sau đó ta tiến hành tách kênh cho ảnh màu.

Để vẽ được biểu đồ dạng Histogram thì ta sẽ sử dụng hàm sau

imhist(duongDanAnh);

| Hướng dẫn vẽ biểu đồ Histogram trong Gui Matlab

Oke bây giờ tôi và bạn làm một ví dụ nho nhỏ dưới đây.

Giả sử tôi có một giao diện như này

Histogram la gi
Histogram la gi

Chức năng:  Chức năng ta cần xây dựng đó là khi nhấn vào nút Mo anh thì một dialog box hiện nên cho phép người dùng chọn các file ảnh định dạng là jpg, bmp, png, tif. Sau đó ta tiến hành đọc ảnh này và hiện thị vào axes cũng như hiện thị thông tin của bức ảnh vào các tag edit1,… edit6. Khi hiện thị các thông tin xong rồi thì người dùng nhấn vào Bieu do Histogram lập tực một biểu đồ Histogram được hiện thị nên.

Oke về vấn đề đọc hiện thị ảnh cũng như các thông tin của bức ảnh đó nếu bạn chưa biết thì bạn hãy xem lại bài viết này Đọc Và Hiện Thị Ảnh Matlab

Dưới đây là code xây dựng toàn bộ chức năng trên

1. Mo anh (pushutton1)

a. Tạo biến toàn cục

global A

b. Lấy tên ảnh và đường dẫn tới ảnh đó

[filename, path] = uigetfile({'*.jpg';'*.bmp';'*.png';'*.tif'}, ...
'Chon anh');

c. Đọc và hiện thị ảnh

if ~isequal(filename, 0)

   A = imread([path, filename]);

   axes(handles.axes1)

   imshow(A);

else

   return

end

Trong đó: 

  • isequal(filename, 0): Kiểm tra tên file có bằng 0 hay không. ~ ngược lại là khác 0
  • imread():  Đọc ảnh
  • imshow(): Hiện thị ảnh

d. Hiện thị thông tin ảnh nên các tag edit

– Đọc ảnh

info = imfinfo(fullfile(path,filename));

– Hiện thị thông tin ảnh

set(handles.edit4, 'String', filename);

set(handles.edit1, 'String', info.FileSize);

set(handles.edit2, 'String', info.Width);

set(handles.edit3, 'String', info.Height);

set(handles.edit5, 'String', info.BitDepth);

set(handles.edit6, 'String', info.ColorType);
ve bieu do Histogram matlab
ve bieu do Histogram matlab

2. Bieu do Histogram (pushutton2)

a. Gọi biến toàn cục

global A

b. Lấy giá trị kiểu ảnh (Ảnh xám hay là ảnh màu)

ColorType = get(handles.edit6, 'String');

Trong đó: handles.edit6 là giá trị mà ta có được khi lấy thông tin của bức ảnh và lưu vào edit6

c. Vẽ biểu đồ Histogram

figure;

switch ColorType

    case 'grayscale'

       imhist(A);

       title('Histogram Anh Xam');

    case 'truecolor'

       subplot(3,1,1)

       imhist(A(:,:,1));

       title('Histogram Kenh Do');

       subplot(3,1,2)

       imhist(A(:,:,2));

       title('Histogram Kenh Xanh La');

       subplot(3,1,3)

       imhist(A(:,:,3));

       title('Histogram Kenh da troi');
end

Trong đó:

  • grayscale Là ảnh xám. Cho nên ta vẽ luôn
  • truecolor Là ảnh màu. Ta sẽ tách làm 3 kênh tương đương vẽ 3 biểu đồ của 3 kênh này
  • subplot(3,1,1) Vẽ biểu đồ thứ nhất. subplot(3,1,2), subplot(3,1,3) tương tự
  • imhist Hàm vẽ Histogram
  • title(‘Histogram Kenh Do’) Đặt tiêu đề
  • A(:,:,1) Là tách ảnh 3 chiều A(:,:,2), A(:,:,3) tương tự
Histogram matlab la gi
Histogram matlab la gi

Oke bây giờ bạn chạy trương trình nên xem nào

– Đây là biểu đồ của ảnh Màu

Histogram anh mau
Histogram anh mau

Như hình trên bạn có thể thấy thì bit có cường độ xám giống nhau nhiều nhất là 50.

– Đây là biểu đồ ảnh xám

Histogram anh xam
Histogram anh xam

Tổng Kết:

Như vây tôi và bạn đã cùng tìm hiểu về Histogram trong Matlab. Qua bài học này hi vọng rằng bạn có cái nhìn tổng quan về Histogram cũng như cách sử dụng vx biểu đồ của nó, các hàm hỗ trợ. Chúc bạn thành công!

0 0 bỏ phiếu
Đánh giá bài viết

Thủ Thuật Windows

Nếu như trong quá trình bạn tải file Active về mà bị thông báo là "tệp chứa virus" và bị xóa thì hãy làm theo các bước sau trước khi tải về nhé:

Bước 1: Tắt Windows Defender (Win 10), bạn hãy làm theo các bước này để tắt Defender tạm thời nhé, sau khi Active xong, bạn có thể bật lại:
1. Mở ứng dụng Settings.
2. Trên cửa sổ Settings, bạn tìm và click chọn Update & security.
3. Tiếp theo click chọn Windows Defender.
4. Chuyển trạng thái tùy chọn Real-time protection sang OFF.

Bước 2: Ngoài ra, Nếu trong quá trình tải về mà bạn dùng trình duyệt Chrome hay Cốc Cốc thì sau khi file tải xong không được bấm "Hủy" mà bạn nên bấm tổ hợp phím “Ctrl + J” để vào phần quản trị download, tìm đến file mà bạn tải rồi click vào ô “Khôi phục tệp…” nhé.

Có một số trường hợp file Active tải về mặc định bị xóa, nếu gặp trường hợp này bạn cần chắc chắn rằng Windows Defender hay phần mềm diệt virus trên máy đã được tắt. Sau đó bạn bấm “Ctrl +J“, tại link tải active mà bạn vừa tải về đã bị xóa, bạn hãy click vào đó để trình duyệt tải lại một lần nữa và lần này là sẽ thành công.

BQT: VuTienBlog

Subscribe
Thông báo
guest
2 Comments
Phản hồi nội tuyến
Xem tất cả các ý kiến
Nhung
Nhung
3 year ago

Em làm như trên nhưng vẫn không thể hiện thị được Histogram của ảnh xám,ảnh xám vẫn hiện biểu đồ gồm 3 màu. A giải đáp giúp e với ạ,em cảm ơn

Phú
Phú
Trả lời  Nhung
2 year ago

B mở info ảnh xem ảnh đó có chắc chắn là ảnh xám không

Top
0
Bác có thắc mắc? Nhấn vào đây để bình luận!x
()
x