CrazyBingo

直方图均衡再次—憋命进一步优化

0
阅读(2700) 评论(8)

直方图均衡再次—憋命进一步优化

在上一篇博文中,Bingo总结了整形运算的直方图均衡公式,如下所示:

 

image

实际上第一步、第二步可以一步完成,即小于K就累加,用Matlab实现如下:

%------------------------------------------------
%【2】计算每个灰阶出现的累积个数,并绘制直方图
Gray_Accu = zeros(1,256); 
for i = 1 : h
    for j = 1 : w
            for k = 0 : 255
                if(k >=  IMG1(i,j))
                    Gray_Accu(k+1) = Gray_Accu(k+1) + 1;
                else
                    Gray_Accu(k+1) = Gray_Accu(k+1);
                end
            end
    end
end
subplot(2,2,2);  
bar(0:255,Gray_Accu,'b');       %绘制直方图
xlim([0 255]);              %将横坐标限定在0~255,xlim('auto'); 
title('处理钱的累积直方图');
xlabel('灰阶');
ylabel('累积次数 ');


执行显示原始的Night图,以及灰阶累积的直方图,如下所示:

clip_image008

此时可以直接进行直方图均衡,因为我们已经得到了灰阶累积数据Gray_Accu。首先简化前面我得到的公式,在上一篇博客中,我们使用如下语句实现:


IMG2(i,j) = floor(Gray_Accu(IMG1(i,j)+1)*255/(h*w)); 

首先进行简单的改变一下,其实相差不到,如下:由于在FPGA中我们已经了图像的分辨率,比如640*480的图像,因此这里可以直接将公示改变如下:



IMG2(i,j) = floor(Gray_Accu(IMG1(i,j)+1)/(640*480/255
		 =floor(Gray_Accu(IMG1(i,j)+1) /1205
所以这里我们可以改变为移位,不够由于在FPGA中我们已经了图像的分辨率,比如640*480的图像,因此这里可以直接将公示改变如下:


%------------------------------------------------
%【3】基于灰阶累积的直方图均衡化:[h,w] = [480,640]
IMG2 = zeros(h,w);
for i = 1 : h
    for j = 1 : w
%             IMG2(i,j) = floor(Gray_Accu(IMG1(i,j)+1)*255/(h*w));   %拉伸到【0,255】
            IMG2(i,j) = floor(Gray_Accu(IMG1(i,j)+1)/(1205);   %拉伸到【0,255】
    end
end
subplot(2,2,3);
imshow(uint8(IMG2));    %显示最终的图像
title('均衡后图像 ');


此时得到的图像,以及在此给出该图像的灰阶累积直方图,如下所示:

clip_image010

所以,我们在总结一下直方图均衡的公示,如下:

 

  1. @undefined  

    @CrazyBingo

    首先谢谢你的回复,,真是个热心的人!


    视频的单幅图看不出问题,帧间有纹波样的闪动,经过验证,应该是像素点的闪动,高斯噪声,我准备先用个简单的一阶递归滤波器试试看效果。效果我在这继续回复给你~


    说句心里话,很佩服你。我13年研究生毕业,好像大你一届,但和你比,差好多好多。本来最近又有点浮躁,看了你为新书写的序,又让我平静了很多,再次感谢。



    有没有可能是用的模拟的摄像头然后采集到的图象是隔行扫描的,需要做去交错处理


  2. 非常好
  3. @匿名用户(1.95.109.45 )

    啊呀。。。。都是闹着玩的。。

    我知道你那个什么意思了。。。不一定是图像的问题,。。。可能是 LCD时序那边的问题  。。比如DCLK上升沿下降沿有效。。。是门控还是PLL输出时钟。。时序约束等   


    您再试试吧   讨论 &  共进

  4. 匿名用户匿名用户

    @CrazyBingo

    首先谢谢你的回复,,真是个热心的人!


    视频的单幅图看不出问题,帧间有纹波样的闪动,经过验证,应该是像素点的闪动,高斯噪声,我准备先用个简单的一阶递归滤波器试试看效果。效果我在这继续回复给你~


    说句心里话,很佩服你。我13年研究生毕业,好像大你一届,但和你比,差好多好多。本来最近又有点浮躁,看了你为新书写的序,又让我平静了很多,再次感谢。

  5. @匿名用户(1.95.109.45 )

    (1)闪动??给我个图看看

    (2)3D降噪我没做过诶,只是以前在公司的时候,他们做过这个项目

    (3)直方图+均值滤波会好一点。。而且容易过曝  是不大好

  6. 匿名用户匿名用户

    Bingo你好,我最近在FPGA视频处理上遇到一个问题,用FPGA做实时视频处理,可能由于sensor本身或者电路问题,视频有闪动,经过研究发现需要使用3D降噪,我理解是需要时序运算。

    由于工期紧,以前又没有涉及过#D降噪,所以求助于网络,搜索到了你为新书写的序,看到你有研究过3D降噪,是否有时间指点一二?给几篇相关文档看下,不求代码,但求思路~我找不到你联系方式,只能留下自己的邮箱了,449158345@qq.com

    匿名发帖是因为这个网站无法注册,好像系统有问题,冒犯啦~


    另外我也大致浏览了你的博客帖子,看到你这两篇关于直方图均衡的博客,这里说下我的看法,直方均衡是图像对比度增强的一种常见方法,但普通的直方均衡在加大对比的同时,会“拉”出图像固有的噪声,所以需做改进的直方均衡,最基础的可以看看平台直方均衡,或者是下面这位网友的博客:http://blog.csdn.net/laviewpbt/article/details/13614471,这个算法我还没有验证过,但看上去很靠谱~


    期待你的回复~

  7. @adxiaowei
    哈哈
  8. 超级帅!!!!