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

| 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.

Bạn đang xem: Biểu đồ histogram trong xử lý ảnh

*
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

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.

Xem thêm: 【Hướng Dẫn】 Cách Đồng Bộ Google Drive Với Máy Tính, Cách Tạo Thư Mục Tự Động Đồng Bộ Lên Google Drive

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 Ab. Lấy tên ảnh và đường dẫn tới ảnh đó

= uigetfile({"*.jpg";"*.bmp";"*.png";"*.tif"}, ..."Chon anh");c. Đọc và hiện thị ảnh

if ~isequal(filename, 0) A = imread(); axes(handles.axes1) imshow(A);else returnendTrong đó: 

isequal(filename, 0): Kiểm tra tên file có bằng 0 hay không. ~ ngược lại là khác 0imread(): Đọc ảnhimshow(): 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

2. Bieu do Histogram (pushutton2)

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

global Ab. 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");endTrong đó:

grayscale Là ảnh xám. Cho nên ta vẽ luôntruecolor 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àysubplot(3,1,1) Vẽ biểu đồ thứ nhất. subplot(3,1,2), subplot(3,1,3) tương tựimhist Hàm vẽ Histogramtitle(‘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

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

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

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!