这是关于“基于单幅图像的去雾算法研究”中matlab代码 ,特别是win_size =
来源:学生作业帮 编辑:百度作业网作业帮 分类:综合作业 时间:2024/08/19 08:16:39
这是关于“基于单幅图像的去雾算法研究”中matlab代码 ,特别是win_size =
img_name='imagel.jpg';
% 原始图像
I=double(imread(img_name))/255;
% 获取图像大小
[h,w,c]=size(I);
win_size = 7;
img_size=w*h;
dehaze=zeros(img_size*c,1);
dehaze=reshape(dehaze,h,w,c);
%figure,imshow(I);
win_dark=zeros(img_size ,1);
for cc=1:img_size
win_dark(cc)=1
end
win_dark=reshape(win_dark,h,w);
%计算分块darkchannel
for j=1+win_size:w-win_size
for i=win_size+1:h-win_size
m_pos_min = min(I(i,j,:));
for n=j-win_size:j+win_size
for m=i-win_size:i+win_size
if(win_dark(m,n)>m_pos_min)
win_dark(m,n)=m_pos_min;
end
end
end
end
end
figure,imshow(win_dark);
for cc=1:img_size
win_dark(cc)=1-win_dark(cc);
end
%选定精确dark value坐标
win_b = zeros(img_size,1);
for ci=1:h
for cj=1:w
if(rem(ci-8,15)
img_name='imagel.jpg';
% 原始图像
I=double(imread(img_name))/255;
% 获取图像大小
[h,w,c]=size(I);
win_size = 7;
img_size=w*h;
dehaze=zeros(img_size*c,1);
dehaze=reshape(dehaze,h,w,c);
%figure,imshow(I);
win_dark=zeros(img_size ,1);
for cc=1:img_size
win_dark(cc)=1
end
win_dark=reshape(win_dark,h,w);
%计算分块darkchannel
for j=1+win_size:w-win_size
for i=win_size+1:h-win_size
m_pos_min = min(I(i,j,:));
for n=j-win_size:j+win_size
for m=i-win_size:i+win_size
if(win_dark(m,n)>m_pos_min)
win_dark(m,n)=m_pos_min;
end
end
end
end
end
figure,imshow(win_dark);
for cc=1:img_size
win_dark(cc)=1-win_dark(cc);
end
%选定精确dark value坐标
win_b = zeros(img_size,1);
for ci=1:h
for cj=1:w
if(rem(ci-8,15)
![这是关于“基于单幅图像的去雾算法研究”中matlab代码 ,特别是win_size =](/uploads/image/z/15838029-45-9.jpg?t=%E8%BF%99%E6%98%AF%E5%85%B3%E4%BA%8E%E2%80%9C%E5%9F%BA%E4%BA%8E%E5%8D%95%E5%B9%85%E5%9B%BE%E5%83%8F%E7%9A%84%E5%8E%BB%E9%9B%BE%E7%AE%97%E6%B3%95%E7%A0%94%E7%A9%B6%E2%80%9D%E4%B8%ADmatlab%E4%BB%A3%E7%A0%81+%2C%E7%89%B9%E5%88%AB%E6%98%AFwin_size+%3D)
这是2009年香港中文大学学生何恺明发表在CPVR上的文章《Single Image Haze Removal Using Dark Channel Prior》的源代码,但应该不是他本人写的.
图像是由一个个像素点组成的,而文章中对像素点的操作是针对以这个像素点为中心、大小为15*15的矩形区域进行的,所以win_size=7.其实定义为多少都没关系,可能在他看来7效果更好.
至于其他的语句,建议你把这篇文章下载下来,看看,文章中讲述的去雾原理其实很简单,讲的也很清楚.但是这个源代码好像有些地方和他讲的不太一样,这不本质.
再问: 非常谢谢你的回答!我还想问下,由于图像一般在400*600左右,但是这段代码要求图像要是在200*300左右,所以matlab 7.1运行时,总是提示:out of memory ,也就是超出内存,请问要怎么解决呢?
再问: 您好!非常满意您的回答!还还想请问下这个问题该怎么解决,这段代码要求图片大小在200*300左右,但是我的有雾图片大小都在400*600左右,用matlab 7.1运行,总是提示:out of memory 。也就是内存不够,要怎么解决呢?
再答: 具体的算法我们实现过,不过看它的代码里容易造成内存溢出的就是这三条语句: vals=vals(1:len); row_inds=row_inds(1:len); col_inds=col_inds(1:len); 他的len这个变量会非常大,以致matlab保存不了vals这个矩阵。所以需要修改一下他的soft matting这一步的算法。你可以按照这个思路修改一下。
再问: 还是不知道怎么修改,你帮忙再提示下,谢谢!
再答: 具体实现我没实现过,只是想了一下,不知道你下载这篇文章了么? 我的想法是上述源码中 %显示分块darkchannel %figure, imshow(win_dark); 之前的可以保留,但是后面的就需要重新写了。 具体的就是之前我们已经计算得到transmission矩阵t~了。 再求出Matting Laplacian matrix,也就是矩阵L 最后利用方程(L + λU)t = λ~,求解出soft后的矩阵t。这一步是为了使得到的图像更平滑、清晰。 最后利用文章中式16恢复源图像的RGB值即可实现去雾的效果。 具体的代码实现我没有写过,不过上面是作者提出的算法流程。 希望能够帮助你!
再问: 可以给我你的QQ号吗,我想跟您商量些事!!
图像是由一个个像素点组成的,而文章中对像素点的操作是针对以这个像素点为中心、大小为15*15的矩形区域进行的,所以win_size=7.其实定义为多少都没关系,可能在他看来7效果更好.
至于其他的语句,建议你把这篇文章下载下来,看看,文章中讲述的去雾原理其实很简单,讲的也很清楚.但是这个源代码好像有些地方和他讲的不太一样,这不本质.
再问: 非常谢谢你的回答!我还想问下,由于图像一般在400*600左右,但是这段代码要求图像要是在200*300左右,所以matlab 7.1运行时,总是提示:out of memory ,也就是超出内存,请问要怎么解决呢?
再问: 您好!非常满意您的回答!还还想请问下这个问题该怎么解决,这段代码要求图片大小在200*300左右,但是我的有雾图片大小都在400*600左右,用matlab 7.1运行,总是提示:out of memory 。也就是内存不够,要怎么解决呢?
再答: 具体的算法我们实现过,不过看它的代码里容易造成内存溢出的就是这三条语句: vals=vals(1:len); row_inds=row_inds(1:len); col_inds=col_inds(1:len); 他的len这个变量会非常大,以致matlab保存不了vals这个矩阵。所以需要修改一下他的soft matting这一步的算法。你可以按照这个思路修改一下。
再问: 还是不知道怎么修改,你帮忙再提示下,谢谢!
再答: 具体实现我没实现过,只是想了一下,不知道你下载这篇文章了么? 我的想法是上述源码中 %显示分块darkchannel %figure, imshow(win_dark); 之前的可以保留,但是后面的就需要重新写了。 具体的就是之前我们已经计算得到transmission矩阵t~了。 再求出Matting Laplacian matrix,也就是矩阵L 最后利用方程(L + λU)t = λ~,求解出soft后的矩阵t。这一步是为了使得到的图像更平滑、清晰。 最后利用文章中式16恢复源图像的RGB值即可实现去雾的效果。 具体的代码实现我没有写过,不过上面是作者提出的算法流程。 希望能够帮助你!
再问: 可以给我你的QQ号吗,我想跟您商量些事!!
求基于小波变换的图像融合Matlab算法
求基于matlab的EMD代码,
基于FFT的成像算法是什么?matlab的
矩形排样问题 基于遗传算法的 matlab源代码
matlab nlinfit函数基于什么迭代算法写的
我需要一个基于免疫遗传算法的matlab程序,关于函数寻优的,最好在附有讲解
请问如何在Matlab中画出z=exp(x.^2+y.^2)的图像?请给出完整代码(M文件代码)
matlab 粒子群算法代码
数学建模各种算法MATLAB的编程代码
用于图像压缩的PCA算法是基于协方差矩阵的还是基于相关系数矩阵?这两种方法有什么区别吗?
帮忙解释一段基于DWT的数字水印的MATLAB代码
数字图像处理 图像缩放以及旋转的算法代码