Trong matlab để đều hóa tổ chức đồ, ta dùng hàm histeq với cú pháp như sau:
>> i_eq = histeq(i_gray);
>> imshow ([i_gray i_eq]);
Để tự viết hàm đều hóa tương tự như hàm histeq, ta có đoạn code matlab sau:
im = rgb2gray(imread('03.jpg'));
s = size(im);
ni(1:256) = 0;
for i=1:s(1)
for j = 1:s(2)
ni(im(i,j)+1) = ni(im(i,j)+1)+1;
end;
end;
s_ni(1:256) = 0;
s_ni(1) = ni(1);
for i=2:256
s_ni(i) = ni(i)+s_ni(i-1);
end;
n = s(1)*s(2);
c = 255/n;
s_ni = round(s_ni*c);
ikq = im;
for i=1:s(1)
for j=1:s(2)
ikq(i,j) = s_ni(im(i,j)+1);
end;
end;
figure,imshow (im),figure,imshow (ikq);
Kết quả:
histeq(ảnh_cần_đều_hóa);
Ví dụ: 03.jpg là 1 ảnh màu RGB
>> i_gray=rgb2gray(imread('03.jpg'));>> i_eq = histeq(i_gray);
>> imshow ([i_gray i_eq]);
Ảnh gốc - Ảnh sau khi đều hóa |
Để tự viết hàm đều hóa tương tự như hàm histeq, ta có đoạn code matlab sau:
im = rgb2gray(imread('03.jpg'));
s = size(im);
ni(1:256) = 0;
for i=1:s(1)
for j = 1:s(2)
ni(im(i,j)+1) = ni(im(i,j)+1)+1;
end;
end;
s_ni(1:256) = 0;
s_ni(1) = ni(1);
for i=2:256
s_ni(i) = ni(i)+s_ni(i-1);
end;
n = s(1)*s(2);
c = 255/n;
s_ni = round(s_ni*c);
ikq = im;
for i=1:s(1)
for j=1:s(2)
ikq(i,j) = s_ni(im(i,j)+1);
end;
end;
figure,imshow (im),figure,imshow (ikq);
Kết quả: