码迷,mamicode.com
首页 > 其他好文 > 详细

图像去雾 第二次报告

时间:2014-08-16 16:32:00      阅读:378      评论:0      收藏:0      [点我收藏+]

标签:linux

图像去雾 第二次报告




           去雾理论基于是根据何凯明博士的论文成果来做的。Standing on the shoulder of gaints !


之前我关于去雾的第一次总结


由于采用最小值滤波去雾会出现“边界问题”

bubuko.com,布布扣


            当“前景”和“背景”在空间上相距较远时,暗通道的像素value会相差较大,最小值滤波和最大值滤波都会导致边界问题。



此时最理想的方法应该是中值滤波,然而中值滤波几乎完全不可避免的要对搜索框的数据进行排序,然后才能得到中值。排序是时间代价很大的操作,说的轻巧,但是如果让user去等待20s+估计没人买你产品了。

快速,优质的图像,是项目应该追求的最好目标,这应该是正方向,两者都不能抛弃



中值算法让这两个条件——快速,优质图像,变得异常艰难(最起码对于我这种渣渣来说,快排都不行,会等很久)。


尝试用均值去滤波

去雾前:                                                                    去雾后:

bubuko.com,布布扣bubuko.com,布布扣



        bubuko.com,布布扣bubuko.com,布布扣



细心观察会发现,人物边缘,图像前景和背景分解的边缘,会有明显的可见白雾没有去除。

为此很苦恼,中值必须排序,排序就慢(做图像的数据量太大了).




在一副500*400像素的图片里面15*15的搜索框感觉算比较大的了,我们可以通过减小搜索框的大小来减小单次待处理的数据量(其实这样以来,总的计算次数也会下降!),而这几乎是一种手段,类似于数学里的非线性模型的小段微分之后的线性化看待,这样,只要框适当小,框内数据值波动不会很大,这很重要,即使在边界也会成立,影响不大。



于是,我尝试改良均值滤波。

用中值滤波和均值滤波结合来处理——”伪中值滤波“


for(square_row = row-SQUARE_LENGTH/2,sub = 0,sub_prev = 255;
			 	square_row < (row + SQUARE_LENGTH/2+1);
				square_row++)
			{
				for(square_col = col-SQUARE_LENGTH/2; square_col < (col+SQUARE_LENGTH/2 +1);square_col++)
				{
					if(square_row >= 0 && square_col >= 0 &&
					 square_row < (search_win_height_end) &&
					 square_col < (search_win_width_end))
					{
						sub = temp -  *(ptr_array_win_dark + (square_row)*(img_win_dark->width) + (square_col));
			                        //temp 是已经求得的搜索框像素值均值,做差,取差值最小的像素点的像素值
						if(sub_prev > sub)
						{
							sub_prev = sub;
							median_value =  *(ptr_array_win_dark + (square_row)*(img_win_dark->width) + (square_col));
							//printf("mean %lf median: %lf\n",temp,median_value);
							
						}
					}
				}
			}

			*(ptr_array_af_filter + col + row*(img_af_filter->width)) = median_value;

处理思想:

通过先计算均值,然后找到搜索框内距离均值最近的点(该点的像素值不一定是均值,但是是最靠近的)

用这点的像素值作为滤波像素值。


边缘问题得到了很好的解决!


bubuko.com,布布扣



                                      bubuko.com,布布扣bubuko.com,布布扣


感觉效果蛮好的~


bubuko.com,布布扣bubuko.com,布布扣


C 版本出来的效果和Matlab的效果几乎完全一致,赶脚可以达到预期目标。


—— EOF

        2014.08.16 下午 于XTU




图像去雾 第二次报告,布布扣,bubuko.com

图像去雾 第二次报告

标签:linux

原文地址:http://blog.csdn.net/cinmyheart/article/details/38612929

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!