function imgDenoised = NLEM(imgNoisy, h, P, S)
[m, n] = size(imgNoisy);
N = 2*P + 1;
h2 = h * h;
kNN = ceil ( (2*S + 1)^2 / 2 ); % top 50% of the neighbors used
imgPad = padarray(imgNoisy, [P P], 'symmetric');
imgDenoised = zeros(m,n);
fprintf('Looping over pixels....\n');
for i = 1 : m
ii = i + P;
for j = 1 : n
jj = j + P;
patchRef = imgPad(ii - P : ii + P, jj - P : jj + P);
pmin = max(i - S, 1) + P;
qmin = max(j - S, 1) + P;
pmax = min(i + S, m) + P;
qmax = min(j + S, n) + P;
s1 = pmax - pmin + 1;
s2 = qmax - qmin + 1;
w = zeros(s1, s2);
neighborPatches = zeros(s1, s2, N^2);
patchCurrent = zeros(2*P + 1, 2*P + 1);
patch = zeros(N, N); %#ok<*NASGU>
u = 0;
for p = pmin : pmax
u = u + 1;
v = 0;
for q = qmin : qmax
v = v + 1;
patchCurrent = imgPad(p - P : p + P, q - P : q + P);
d2 = sum(sum( (patchRef - patchCurrent) ...
.* (patchRef - patchCurrent) ));
w(u, v) = exp(- d2 / h2);
patch = imgPad(p - P : p + P, q - P : q + P);
neighborPatches(u, v, :) = reshape(patch, [N^2 1]);
end
end
% sort weights
w = reshape(w, [s1*s2 1]);
[w , I] = sort(w, 'descend');
L = min(kNN, s1*s2);
f = reshape(neighborPatches, [s1*s2 N^2])';
median = findEuclideanMedian(f(: , I(1 : L)), w(1 : L));
patch_est = reshape(median, [N N]);
imgDenoised(i, j) = patch_est(P + 1, P + 1);
end
end
基于NLEM非局部欧几里得中值滤波算法的图像去噪matlab仿真,含仿真操作录像
版权申诉
63 浏览量
2022-04-11
18:08:39
上传
评论
收藏 9.66MB RAR 举报
fpga和matlab
- 粉丝: 15w+
- 资源: 2550
最新资源
- 第12章spring-mvc自定义类型转换器
- 基于PHP图书管理系统实验报告.docx
- Python爬取淘宝热卖商品并可视化分析
- 5152单片机proteus仿真和源码将按键次数写入AT24C02再读出并用1602LCD显示
- SE-SSD复现过程(Det3D的安装教程)
- 基于Python的在线学习与推荐系统设计与实现(论文+源码)-kaic
- 串口通过 YMODEM 协议进行文件传输
- 蓝桥杯2024年第十五届省赛真题-前缀总分
- com.qihoo.appstore_300101305-1.apk
- tensorflow-gpu-2.7.1-cp37-cp37m-manylinux2010-x86-64.whl
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈