% 原始非局部均值(Original Non-local Means, ONLM)算法,基本思想是利用图像中大量冗余信息,对图像中所有相似邻域内像素的灰度值

% 根据权重系数计算加权平均得到受污染像素的灰度估计值,其中权重系数由加权核函数和像素邻域之间的加权欧式距离决定。由于NLM 算法

% 计算量非常大,为提高算法的效率,采用限定邻域搜索范围的 NLM 算法,像素邻域大小 7×7,邻域搜索范围 21×21,并且调整核函数的滤

% 波参数使去噪性能达到最佳

clear;

% close all;

clc;

searchBox_r=10;%搜索框半径

similarBox_r=3;%相似框半径

h=20;%指数函数的衰减因子

rawImage=imread('barbara512.bmp');

% rawImage=imresize(rawImage,0.2);

[rawImage_m, rawImage_n]=size(rawImage);

denoisedImage=zeros(rawImage_m,rawImage_n);

% figure

% imshow(rawImage,[]);%显示原始图像

% title('raw image')

% noise=wgn(rawImage_m,rawImage_n,25);

% noiseImage=double(rawImage)+double(noise);

noiseImage=imnoise(rawImage,'gaussian', 0, 10^2/255^2);

H1=figure;

imshow(noiseImage,[]);%显示加入噪声后图像

title('noise image');

padNoiseImage = padarray(noiseImage,[searchBox_r searchBox_r],'symmetric'); %将边缘对称折叠上去

padNoiseImage = double(padNoiseImage);

%计算高斯核

alpha=1;%高斯加权欧氏距离的标准差

gaussMat = repmat(-similarBox_r:similarBox_r,2*similarBox_r+1,1);

gaussWeight = exp(-((gaussMat).^2+(gaussMat').^2)/(2*alpha*alpha));

%像素点遍历(像素点在搜索区域中心)

for pixel_i=searchBox_r+1:rawImage_m+searchBox_r

for pixel_j=searchBox_r+1:rawImage_n+searchBox_r

average=0;

sweight=0;

NI= padNoiseImage(pixel_i-similarBox_r:pixel_i+similarBox_r,pixel_j-similarBox_r:pixel_j+similarBox_r);%取出像素点邻域

%相似框在搜索框中遍历

for similarBox_i=pixel_i-searchBox_r+similarBox_r:pixel_i+searchBox_r-similarBox_r

for similarBox_j=pixel_j-searchBox_r+similarBox_r:pixel_j+searchBox_r-similarBox_r

NJ= padNoiseImage(similarBox_i-similarBox_r:similarBox_i+similarBox_r,similarBox_j-similarBox_r:similarBox_j+similarBox_r);%取出相似框中心点邻域

difMatrix=(NI-NJ).*gaussWeight;%漏乘了高斯加权矩阵

dij=sum(sum(difMatrix.^2));%代表两个矩阵的相关性,利用像素点的相关性来还原图像

fk=exp(-dij/(h^2));

sweight=sweight+fk;%计算权重和

average = average + fk*padNoiseImage(similarBox_i,similarBox_j); %计算加权和

end

end

denoisedImage(pixel_i-searchBox_r,pixel_j-searchBox_r) = average / sweight;%求加权均值

end

end

H2=figure;

imshow(denoisedImage,[]);%滤波后图像

title('NLM denoised image');

figure(H1);

text(0,0,sprintf('PSNR:%f',my_psnr(double(rawImage),double(noiseImage))));

figure(H2);

text(0,0,sprintf('PSNR:%f',my_psnr(double(rawImage),double(denoisedImage))));

一键复制

编辑

Web IDE

原始数据

按行查看

历史

matlab nlm,NLM.m · hr_yang/MatlabCode - Gitee.com相关推荐

  1. matlab complexity,complexity.m · zigzag2015/matlab-glonass-signal-choice - Gitee.com

    %/** % Данный скрипт: % 1) либо рассчитывает базовый показатель сложности - только по % полосе и мно ...

  2. matlab drawrect,drawRect.m · gavine/SSD-Single-Shot-Detector-in-Matlab - Gitee.com

    % 此函数非本人编写 % 参考自:https://www.cnblogs.com/GarfieldEr007/p/5598861.html function [ dest ] = drawRect( ...

  3. 博客园Markdown模式的MATLAB代码高亮方案

    前言 博客园随笔写作可以使用 Markdown 进行编辑,当展示代码时,可以使用下面的语法来对代码块进行展示: ​```language code-content ​``` 一般来说,指明了 lang ...

  4. 非局部相似性 matlab,非局部均值滤波(NLM)和MATLAB程序详解视频教程保持图像细节...

    [内容简介]<非局部均值滤波与应用和MATLAB程序详解视频>共6章28节视频,总学时698分钟,合11.6小时.主要内容包括:非局部均值滤波类算法入门,基于滤波参数自适应的非局部均值滤波 ...

  5. 基于matlab 非局部均值(NLM)滤波图像去噪

    基于matlab 非局部均值(NLM)滤波图像去噪 一.简介 1 NLM滤波原理 2 Pixelwise Implementation 3 Patchwise Implementation 二.源代码 ...

  6. 最近电平接近 NLM 模块化多电平变换器matlab/simulink仿真模型

    最近电平接近 NLM 模块化多电平变换器matlab/simulink仿真模型 ID:66120643341036528书院街登山的兰瓜

  7. 【图像去噪】基于非局部均值(NLM)滤波图像去噪含Matlab源码

    1 简介 图像在获取和传输过程中,不可避免地受到外部和内部的干扰,常常因为各种因素的影响而被加入很多噪声,这十分严重的影响了人们对传输后图像信息的读取.因此通过一定方法将被噪声污染的图像进行去噪处理一 ...

  8. 【信号去噪】基于NLM时间序列心电信号去噪附matlab代码

    1 简介 作为一种信号预处理手段,信号去噪在众多信号处理应用中发挥着重要的作用.到目前为止,信号去噪问题被大量研究,并取得了许多重要成果,涌现出了包括非局部均值(NLM)去噪算法在内的一批优秀的去噪方 ...

  9. 【图像去噪】基于非局部均值(NLM)滤波图像去噪matlab源码

    一.简介 1 NLM滤波原理 2 Pixelwise Implementation 3 Patchwise Implementation function [output]=NLmeans(input ...

最新文章

  1. 华为鸿蒙手机官网价格表,曝下半年华为将推出两款鸿蒙手机:国内独享,价格良心...
  2. 【Linux】一步一步学Linux——w命令(97)
  3. 机器学习(1)之梯度下降(gradient descent)
  4. tpc-c值大于46万_超过46万人参加了2018年慕尼黑啤酒节
  5. 记录是一段旅程:记录Scribus可获得3课
  6. Android NDK 【错误】The method loadLibrary(String) is undefined for the type Settings.Syste
  7. linux nc命令入门
  8. Silverlight 4常用StringFormat格式总结(转)
  9. python八皇后问题递归算法_八皇后问题--递归回溯算法(Python实现)
  10. 【Keras】Keras中fit_generator的使用,及fit、fit_generator、和train_on_batch的区别
  11. 推荐 :大数据下的用户与价值分析
  12. 电烙铁使用方法,diy套件
  13. 浅析网络犯罪如何取证
  14. 2020_WWW_The Structure of Social Influence in Recommender Networks
  15. python音频分析工具_python – 鸟鸣音频分析 – 查找两个剪辑的匹配程度
  16. Trinoo DDOS 攻击软件分析
  17. requireJS的使用
  18. 阴沟里翻船——学霸的迷宫
  19. 欢迎光临我的公众号和我的博客
  20. 【图形学】后处理下的HDR、颜色分级、颜色映射与颜色空间

热门文章

  1. 短时间如何过Java校招
  2. 通信安全重重考验,阿里云通信如何打造企业级“安全感”?
  3. Microsoft Remote Desktop提示「Your session was disconnected」
  4. PyCharm中怎么将非当前工程文件的目录的文件加到当前工程中
  5. 力扣解法汇总2013-检测正方形
  6. 根据域名展示对应备案号内容的共用站点默认页面index.html
  7. Poi的Excel的导入导出 支持2007
  8. python爬取胡歌相关视频弹幕,分析并制作词云
  9. Ubuntu系统下解压RAR文件
  10. RHEL6 或CentOS 6配置共享存储--使用iSCSI