1 简介
在工程应用中,图像信息通过数字图像系统进行处理、存储和传输等加工变换时,由于不可避免地受到噪声干扰,使得原始图像信息产生偏差和失真,给图像的后续处理带来不便,进而影响人们对图像视觉特性的认知程度。因此,为了改善图像的质量效果,提高人们对图像视觉特性的认知度,对图像噪声进行有效去除,降低噪声对图像信息的干扰是很有必要的。近年来,基于偏微分方程( partial differential equation,PDE) 的图像去噪方法在计算机视觉和图像处理等技术领域得到了广泛的重视,因为它在平滑噪声的同时,能够很好地使图像边缘纹理信息得到保持。
2 部分代码
%---------------------------------------------%
% %
clc
clear all
% I=imread('pentagram.bmp');%gray image
% I=imread('lena1.bmp');
% I=imread('cameraman.tif');I=double(I(25:125,70:170));
I=imread('canal.gif');%gray noisy image
% [I,map]=imread('ct_scan.bmp');I=ind2gray(I,map);
% I=imread('haifa.bmp');%color image
I=double(I);
[row,col,nchannel]=size(I);
In=I;
%加入(均值=0,方差=sigma)的高斯噪声(可选)
sigma=15;
if nchannel==1%gray image
In=I+sigma*randn(row,col);
elseif nchannel==3%color image
In=I+sigma*randn(row,col,3);
end
%手工指定梯度阈值(for smooth&directional diffusion)
K=15;
%用robust_statistic自动估计梯度阈值(参Sapiro P231)
% K=autoK(In)
%画出影响函数曲线
% plot_edgestop(K);
%画出水平集曲线
% figure;contour(In);axis ij;
%扩散去噪
edgestop='pm1';
method='cat';
niter=50;
% It=smooth_diffusion(In,edgestop,method,'is',niter,K,I);
% It=directional_diffusion(In,'tky','av2','is',niter,K,I);
% figure;contour(It);axis ij;%画出水平集曲线
% It=TV_denoise(In,'is',niter,0,0,I);%without fedality term
It=TV_denoise(In,'is',1,1,sigma,I);%with fedality term
% It=order4_diffusion(In,edgestop,'is',niter,K,I);
figure;subplot(131);imshow(uint8(I)); title('原图')
subplot(132);imshow(uint8(In)); title('加噪图')
subplot(133);imshow(uint8(It)); title('去噪图')
% title(['SNR=',num2str(SNR(I,In))]);%信号噪声比:
3 仿真结果
4 参考文献
[1]杨迎春. 基于偏微分方程的图像去噪算法研究[D]. 中北大学, 2012.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。