任何人帮我这个双边滤波器代码申请视频去噪

2视图(30天)
如果真正的
%的代码
结束
% BFILTER2二维双边滤波。
%这个函数实现二维双边过滤使用
%中概述的方法:
%
% c预和r . Manduchi。双边滤波
%灰色和彩色图像。在IEEE学报》上
%计算机视觉国际会议,1998。
%
% B = bfilter2 (W,σ)执行二维双边滤波
%的灰度或彩色图像应该是双
%的精度矩阵大小NxMx1或NxMx3(即。,灰度
用归一化值分别为%或彩色图像)
%的闭区间[0,1]。高斯函数的半尺寸
%的双边滤波器窗口由w .标准的定义
%偏差的双边滤波器有σ,
空间域标准偏差是由%
%σ(1)和intensity-domain标准差
%由σ(2)。
%
%道格拉斯·r·Lanman布朗大学,2006年9月。
% dlanman@brown.edu, http://mesh.brown.edu/dlanman
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
%预处理输入和选择合适的过滤器。
函数B = bfilter2 (w,σ)
%验证输入图像存在并且是有效的。
如果~ (“一个”,“var”)| | isempty ()
错误(输入图像是未定义或无效。);
结束
如果~ isfloat (A) | | ~总和([1,3]= =大小(A, 3)) | |
最小值((:))< 0 | |马克斯((:))1
错误([“输入图像必须是双精度”,
矩阵的大小NxMx1或NxMx3封闭的,
“区间[0,1]。”]);
结束
%验证双边滤波窗口大小。
如果~ (' w ',“var”)| | isempty (w) | |
元素个数(w) ~ = 1 | | w < 1
w = 5;
结束
w =装天花板(w);
%验证双边滤波器标准差。
如果~ (“σ”,“var”)| | isempty(σ)| |
元素个数(σ)~ = 2 | |σ(1)< = 0 | |σ(2)< = 0
0.1σ= [3];
结束
%双边滤波应用灰度或颜色。
如果大小(3)= = 1
B = bfltGray(σ,w,σ(1),(2));
其他的
B = bfltColor(σ,w,σ(1),(2));
结束
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
%实现双边滤波灰度图像。
函数B = bfltGray (w, sigma_d sigma_r)
% Pre-compute高斯距离权重。
(X, Y) = meshgrid (- w: w - w: w);
G = exp (- (x ^ 2 + y ^ 2) / (2 * sigma_d ^ 2));
%创建waitbar。
h = waitbar (0,“应用双边滤波器…”);
集(h,“名字”,双边滤波器的进步的);
%应用双边滤波器。
昏暗的=大小(A);
B = 0(暗);
i = 1:昏暗的(1)
j = 1:昏暗的(2)
%提取局部区域。
iMin = max(我,1);
iMax = min (i + w,昏暗的(1));
jMin = max (j-w, 1);
jMax = min (j + w,昏暗的(2));
我= (iMin: iMax jMin: jMax);
%计算高斯强度权重。
H = exp(-(我(i, j)。^ 2 / (2 * sigma_r ^ 2));
%计算双边滤波器响应。
F = h . * G ((iMin: iMax) - i + w + 1, (jMin: jMax) - j + w + 1);
B (i, j) =总和(F(:)。*我(:))/ (F(:))之和;
结束
waitbar (i /暗(1));
结束
% waitbar关闭。
关闭(h);
% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
%为彩色图像实现双边滤波器。
函数B = bfltColor (w, sigma_d sigma_r)
%转换输入sRGB CIELab颜色空间形象。
如果存在(“applycform”,“文件”)
一个= applycform (makecform (“srgb2lab”));
其他的
一个=色彩(“实验室< rgb”,);
结束
% Pre-compute高斯域权重。
(X, Y) = meshgrid (- w: w - w: w);
G = exp (- (x ^ 2 + y ^ 2) / (2 * sigma_d ^ 2));
方差%重新调节范围(使用最大亮度)。
sigma_r = 100 * sigma_r;
%创建waitbar。
h = waitbar (0,“应用双边滤波器…”);
集(h,“名字”,双边滤波器的进步的);
%应用双边滤波器。
昏暗的=大小(A);
B = 0(暗);
i = 1:昏暗的(1)
j = 1:昏暗的(2)
%提取局部区域。
iMin = max(我,1);
iMax = min (i + w,昏暗的(1));
jMin = max (j-w, 1);
jMax = min (j + w,昏暗的(2));
我= (iMin: iMax jMin: jMax,:);
%计算高斯权重范围。
dL =我(::1)——(I, j, 1);
da =我(::2)——(I, j 2);
db =我(::3)——(I, j, 3);
H = exp (- (dL ^ 2 +哒。^ 2 + db。^ 2) / (2 * sigma_r ^ 2));
%计算双边滤波器响应。
F = h . * G ((iMin: iMax) - i + w + 1, (jMin: jMax) - j + w + 1);
norm_F = (F(:))之和;
B (i, j, 1) =总和(总和(f *我(:,:1)))/ norm_F;
B (i, j, 2) =总和(总和(f *我(:,:2)))/ norm_F;
B (i, j, 3) =总和(总和(f *我(:,:,3)))/ norm_F;
结束
waitbar (i /暗(1));
结束
%过滤图像转换回sRGB色彩空间。
如果存在(“applycform”,“文件”)
B = applycform (B, makecform (“lab2srgb”));
其他的
B =色彩(“RGB <实验室”,B);
结束
% waitbar关闭。
关闭(h);

答案(0)

s manbetx 845


释放

R2015a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!