1 简介
随着信息化技术的飞速发展,图像处理成为信号处理领域的重要研究课题和热点问题。图像处理包括很多研究方向,如图像去噪、图像融合[1-2]、图像分割[3-4]等。图像信号是经由图像传感器设备将现实世界中的有用信号通过采集、传输、编码和恢复得到的,由于电磁干扰、信道噪声、传感器噪声等无可避免的客观噪声源,图像去噪成为图像预处理中最关键也是最基础的一步,在满足人们对于图像的清晰度和信息准确度的高要求的同时也为图像后续的进一步处理奠定了坚实的基础。如果对一幅含有噪声的图像进行特征提取,融合或者图像分割,必然难以产生令人满意的处理结果。根据实际情况中图像的噪声统计特性,噪声的分布特点以及频谱的分布规律等,从处理域的角度对图像去噪进行划分可以分成空间域去噪和变换域去噪两个大类[5]。空间域去噪是在图像数据的二维空间上直接进行相关线性或者非线性处理,而后者一般是利用一组正交基函数逼近原始图像信号函数进行域变换,然后把变换域的系数做相关的处理,最后再把处理后的信号进行逆变换到原始域.
空间域的线性滤波技术是发展成熟且分析简单的传统去噪理论,适用于滤除和信号不相关的随机统计特性的噪声信号。但是线性滤波的固有缺陷十分明显,它在去除随机噪声的同时严重损害了图像的边缘纹理细节,使其无法很好的运用在图像的噪声滤除这一领域。空间域的非线性滤波方法与上述的线性滤波技术相比都有着较好的去噪效果,在一定程度上提高了边缘细节的保护能力。常见的非线性滤波包括中值滤波、维纳滤波、自适应滤波等。然而,这些方法仍存在算法效率低,计算量大,几何解释不直观的缺点。比如中值滤波是一种典型的非线性滤波技术,能够有效抑制椒盐噪声,且较好的保护图像边缘细节信息,但因为运用了大量的排序运算,运算效率低,会影响实时信号的处理。
基于频域的数字域滤波技术最早始于傅立叶变换理论的提出。1982 年,法国数学家傅立叶提出并证明了周期信号可以展开为正弦级数,从而将时域和频域之间架起了连接的桥梁,将难以分析的时域信号转化到频域分析,从而成为极其有力的信号处理和分析工具。由于傅立叶变换不具备分析非平稳信号的能力,1946 年 Gabor 在傅立叶理论的基础上提出了短时傅立叶变换,通过时频局部化的窗口函数获取某一时刻的局部信号特征,提高了时间分辨率。
由于短时傅立叶变化的窗口固定大小,不能有效解决非平稳信号的频率变化问题,1984 年地球物理学家 Morlet 提出了小波分析这一概念,并于 1986 年由数学家 Meyer 和 Mall at 提出构造小波函数的多尺度分析方法,进一步完善了小波分析理论,从此将这一理论广泛的应用到信号处理领域。
2 部分代码
function u = rgb_TV_inpainting_primal_dual(miss_image,miss_data, lambda, maxiter,check)
[n_row,n_col,c] = size(miss_image);
N = n_row * n_col;
nabla = make_nabla(n_col,n_row);
v_miss_image = zeros(N,c);
v_miss_data = zeros(N,c);
for i = 1:c
v_miss_image(:,i) = reshape(miss_image(:,:,i)',N,1);
v_miss_data(:,i) = reshape(miss_data(:,:,i)',N,1);
end
%initialization
u = v_miss_image;
p = zeros(2*N,c);
head_u = u;
% algorithm parameter
L = sqrt(8);
tau = 0.01;
sigma = (1/L^2)/tau;
theta = 0.5;
for n_processing = 1:maxiter
old_u = u;
%update dual
temp_p = nabla * head_u * sigma + p;
sqrt_p = repmat(sqrt(temp_p(1:N,:).^2 + temp_p(N+1:2*N,:).^2),[2,1]);
p = temp_p./(max(1,sqrt_p));
% update primal
temp_u = old_u - tau * nabla' * p;
idx1 = (v_miss_data == 1);
u(idx1) = (temp_u(idx1) + tau * lambda * v_miss_image(idx1))/(1 + tau * lambda);
idx2 = (v_miss_data == 0);
u(idx2) = temp_u(idx2);
head_u = u + theta * (u - old_u);
if mod(n_processing,check) == 0
fprintf('TV inpainting Primal-Dual: it = %4d\n', n_processing);
matrix_u = zeros(n_row,n_col,c);
for i = 1:c
matrix_u(:,:,i) = (reshape(u(:,i),n_col,n_row))';
end
subplot(2,2,1), imshow(miss_image,[]);
title('受损图像');
subplot(2,2,2), imshow(matrix_u,[]);
title('TV修复');drawnow;
end
end
3 仿真结果
4 参考文献
[1]彭啸. 基于TV模型和纹理合成的图像修复算法研究[D]. 华南理工大学, 2011.
[2]吕雪莹. 基于Curvelet变换的图像去噪算法研究. 哈尔滨工业大学, 2015.
博主简介:擅长智能优化算法、神经网络预测、信号处理、元胞自动机、图像处理、路径规划、无人机等多种领域的Matlab仿真,相关matlab代码问题可私信交流。
部分理论引用网络文献,若有侵权联系博主删除。