Digital Image Processing experiments (1) - histogram equalization

Experiment topics:

Programming grayscale and color image histogram equalization. Required to give the original image histogram equalization and image gradation transformation curve histogram equalization and histogram when used. Note that the color images require programming by the RGB color space image to HSI conversion and histogram equalization on the luminance channel.

Source:

Gray-scale image processing, gradation transformation curve is given in FIG histogram of the original image, and the image histogram equalization and histogram equalization when used

// 灰度图像
clear 
%读入彩色图像将其灰度化
pic=imread('grey.png');	
imshow(pic)		%显示出来
title('输入的灰色png图像')

%绘制直方图
[m,n]=size(pic);	%测量图像尺寸参数
GP=zeros(1,256);	%预创建存放灰度出现概率的向量
N=zeros(1,256);
for k=0:255
    N(k+1) = length(find(pic==k));    
    GP(k+1)=length(find(pic==k))/(m*n); 	% 计算每级灰度出现的概率,将其存入 GP 中相应位置
end
figure,bar(0:255,GP,'b')	%绘制直方图title('原图像直方图')
xlabel('灰度值') 
ylabel('出现概率')

%直方图均衡化
CF=zeros(1,256);
for i=1:256
    for j=1:i
        CF(i)=GP(j)+CF(i);	%计算 Sk
    end
end
S2=round((CF*256)+0.5);	%将 Sk 归到相近级的灰度
for i=1:256
    GPeq(i)=sum(GP(find(S2==i)));	%计算现有每个灰度级出现的概率
end
figure,bar(0:255,GPeq,'b')	%显示均衡化后的直方图title('均衡化后的直方图')
xlabel('灰度值') 
ylabel('出现概率')

%图像均衡化
PA=pic;
for i=0:255
PA(find(pic==i))=S2(i+1);	%将各个像素归一化后的灰度值赋给这个像素
end
figure,imshow(PA)	

%绘制灰度级变换曲线
figure
plot(0:255,S2,'r')
xlabel('均值化前')
ylabel('均值化后')
grid on
legend('灰度级变换曲线');

Processing color image, given the original image histogram equalization and image gradation transformation curve and FIGS when used histogram equalization histogram. Note that the color images require programming by the RGB color space image to HSI conversion, then in the luminance channel histogram equalization.

// 彩色图像
function pic2()
clear;
pic=imread('color.jpg');	%读入 JPG 彩色图像文件
imshow(pic)		%显示出来
title('原图像');

[M,N,D] = size(pic);
%提取单通道分量
pic=double(pic);
r=pic(:,:,1);
g=pic(:,:,2);
b=pic(:,:,3);
%实现转换
angle=acos(0.5*((r-g)+(r-b))./(sqrt((r-g).^2+(r-b).*(g-b))));
if (b>=g)
    H = 2*pi-angle;
else
    H = angle;
end
H=H/(2*pi);
S=1-3.*(min(min(r,g),b))./(r+g+b);
H(S==0)=0;
I=(r+g+b)/3;
I=uint8(I);%范围不超[0,255]
%统计像素亮度
INumPixel = zeros(1,256);%用长度为256的一维数组统计各灰度值的数目
for i = 1:M  
    for j = 1: N  
        INumPixel(I(i,j) + 1) = INumPixel(I(i,j) + 1) + 1;  
    end  
end  
%亮度直方图
GP = zeros(1,256);  
for i = 1:256  
    GP(i) = INumPixel(i) / (M * N * 1.0);  
end  
figure,bar(0:255,GP,'b')	%绘制直方图title('原图像直方图')
xlabel('亮度值') 
ylabel('出现概率')

%直方图均衡化
S2 = zeros(1,256);  
for i = 1:256  
    if i == 1  
        S2(i) = GP(i);  
    else  
        S2(i) = S2(i - 1) + GP(i);  
    end  
end  
                                %S2乘上最大灰度255并且向上取整  
S2 = uint8(255 .* S2 + 0.5);  
                                %将原图像各个位置灰度值映射到新值  
for i = 1:M  
    for j = 1: N  
        Inew(i,j) = S2(I(i,j)+1);  
    end 
end
for i=1:256
    GPeq(i)=sum(GP(find(S2==i)));	%计算现有每个灰度级出现的概率
end
figure
plot(0:255,GPeq,'b')	%显示均衡化后的直方图title('均衡化后的直方图')
xlabel('亮度值') 
ylabel('出现概率')

%绘制亮度级变换曲线
figure
plot(0:1:255,S2,'r')
xlabel('均值化前')
ylabel('均值化后')
grid on
legend('亮度级变换曲线');

I=Inew;
H=H*2*pi;
I=double(I);
S=double(S);
H=double(H);
[m,n]=size(H);
%转换
for i = 1:m
    for j = 1:n
        if (0<=H(i,j))&(H(i,j)<2*pi/3)
            B(i,j)=I(i,j).*(1-S(i,j));
            R(i,j)=I(i,j).*(1+S(i,j).*cos(H(i,j))./cos(pi/3-H(i,j)));
            G(i,j)=3*I(i,j)-(R(i,j)+B(i,j));
        end
        if (2*pi/3<=H(i,j))&(H(i,j)<4*pi/3)
            H(i,j)=H(i,j)-2*pi/3;
            R(i,j)=I(i,j).*(1-S(i,j));
            G(i,j)=I(i,j).*(1+S(i,j).*cos(H(i,j)-2*pi/3)./cos(pi-H(i,j)));
            B(i,j)=3*I(i,j)-(R(i,j)+G(i,j));
        end
        if (4*pi/3<=H(i,j))& (H(i,j)<2*pi)
            H(i,j)=H(i,j)-4*pi/3;
            G(i,j)=I(i,j).*(1-S(i,j));
            B(i,j)=I(i,j).*(1+S(i,j).*cos(H(i,j)-4*pi/3)./cos(5*pi/3-H(i,j)));
            R(i,j)=3*I(i,j)-(G(i,j)+B(i,j));
        end
    end
end

output3=cat(3,R,G,B);
output3=uint8(output3);
figure
imshow(output3)

Experimental results

Grayscale image
Gray artwork Here Insert Picture Description
Here Insert Picture Description Here Insert Picture Description
Here Insert Picture Description

Color image
Here Insert Picture DescriptionJin Hang words Autumn

Here Insert Picture Description Here Insert Picture Description
Here Insert Picture Description

By contrast image and the original image after the equalization, the original image after the histogram equalization contrast histogram, histogram of gradation values ​​more evenly after equalization, not concentrated in the whole image.

Released eight original articles · won praise 5 · Views 143

Guess you like

Origin blog.csdn.net/qq_41650371/article/details/105361874