直方图均衡化

xiaoxiao2021-02-28  320

直方图均衡化的目的是利用图像直方图对图像对比度进行调整,“均衡”指将原有的直方图改为均匀分布的直方图。 算法流程 1.构建一个1*255的数组h,用于统计不同灰度值对应的像素个数; 2.计算每个灰度的像素个数在整个图像中所占的百分比 hs(i)=h(i)/image.size i=0….255 3.计算图像各灰度级的累计分布hp hp(i)=sum[hs(k)] k=0…i 4.求出新图像的灰度值 I =255*hp(i)

Matlab代码

I = (imread('lena.bmp')); subplot(2,2,1); imshow(I); subplot(2,2,2); imhist(I); [height, width]=size(I); 步骤一 pixel=zeros(1,256); for i = 1:height for j = 1:width pixel(I(i,j)+1) = pixel(I(i,j)+1) +1;//matlab里下标从1开始,所以数组往后推一位 end end 步骤二 N=height*width*1.0; probpixel=zeros(1,256); for i = 1:256 probpixel(i) = pixel(i)/N; end 步骤三 cumprobpixel=zeros(1,256); for i =1:256 if i==1 cumprobpixel(1)=probpixel(1); else cumprobpixel(i)=cumprobpixel(i-1)+probpixel(i); end end 步骤四 for i=1:height for j=1:width I(i,j)=uint8(255*cumprobpixel(I(i,j)+1)+0.5);//这里是要取整 end end subplot(2,2,3); imshow(I); subplot(2,2,4); imhist(I);

同理c++代码也是同样的步骤。

其实呀,写代码并不难,难的是要把算法步骤理解,这样才能写出来代码。所以并没有不会写代码的人,只会有不理解算法却以自己不擅长,写不好代码为借口的人!自勉(^o^)/~

转载请注明原文地址: https://www.6miu.com/read-81875.html

最新回复(0)