【圖像處理】matlab直方圖均衡

好久沒用matlab了,回顧一下的感覺真的。。

單通道的equalizehist_8uc1.m

function [save] = equalizehist_8uc1(img)
%行,列,通道
[m,n] = size(img);
save = img;
hist = zeros(1,256);
for r = 1 : m
    for c = 1 : n
        val = img(r,c)+1;
        hist(1,val) = hist(1,val) + 1;
    end
end
image_area = m * n;
sum = 0;
for i = 1:256
    hist(1,i) = hist(1,i)/image_area;
    sum = sum + hist(1,i);
    hist(1,i) = uint8(sum * 255+0.5);
end

for r = 1:m
    for c = 1:n
        val = img(r,c);
        save(r,c) = hist(1, val+1);
    end
end
end

3通道的 equalizehist_8uc3.m

function [save] = equalizehist_8uc3(img)
r = img(:,:,1);
g = img(:,:,2);
b = img(:,:,3);
r = equalizehist_8uc1(r);
g = equalizehist_8uc1(g);
b = equalizehist_8uc1(b);
save = cat(3,r,g,b);
end

main.m

clc;
clear all;
img = imread('lena.jpg');
gray = rgb2gray(img);
gray_save = equalizehist_8uc1(gray);
bgr_save = equalizehist_8uc3(img);
figure(1);
imshow(gray_save);
figure(2);
imshow(bgr_save);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章