【图像去噪】基于matlab双立方插值和稀疏表示图像去噪【含Matlab源码 2009期】

举报
海神之光 发表于 2022/08/03 01:00:51 2022/08/03
【摘要】 一、稀疏表示模型简介 图像的稀疏表示能够更好地表示出图像的特征, 其理论依据就是, 有用的图像信号是有序的, 而噪声普遍是杂乱无章的, 因此可以提取出能够表示图像特有奇异性特征的信息, 比如边缘、线段、...

一、稀疏表示模型简介

图像的稀疏表示能够更好地表示出图像的特征, 其理论依据就是, 有用的图像信号是有序的, 而噪声普遍是杂乱无章的, 因此可以提取出能够表示图像特有奇异性特征的信息, 比如边缘、线段、条纹、端点等, 再用特定的过完备字典中的原子进行线性组合, 重构出这些特征信息。红外图像相比于普通的可见光图像更易于受到各种噪声的干扰, 图像的边缘以及纹理等特征更加模糊不清。传统的空域、频域图像去噪方法对红外图像的去噪效果并不理想, 所以我们提出基于稀疏表示的红外图像去噪方法。

基于稀疏表示的图像去噪方法先将待处理的图像分成n×n的图像块, 然后对这些图像块分别进行稀疏分解, 以滤除图像中的噪声, 再将图像块拼接成去噪后的完整图像。

对于一个给定的图像块信号x∈RN, 用一个过完备字典Φ=[d1, d2, …, dK]∈RN×K (N<K) 中元素的线性组合来表示:
在这里插入图片描述
α=[α1, α2, …, αK]T∈RK是稀疏矩阵信号, 则基于过完备字典的图像稀疏表示x即:
在这里插入图片描述
l0范数可以转换为l1范数的凸优化问题, 即:
在这里插入图片描述
考虑到实际情况下红外图像去噪这一问题, 上式可以写为以下不等式:
在这里插入图片描述
把式 (4) 中求解得到的每一个图像块拼接在一起, 得到去噪后的完整图像。对于给定的图像X∈RM, 可以分割成许多小的图像块xi=Rix, 其中Ri为分割矩阵[5]。为了防止在图像边界留下拼接的痕迹, 采用重叠的方式分解图像, 因此这种方法会在图像块元素间存在冗余。所以由图像块重构的去噪后的图像是一个欠定问题, 可用最小二乘法来解决, 得到以下的解析解:
在这里插入图片描述

二、部分源代码


clear all; clc;

% read test image
im_l = imread('Data/Testing/input.bmp');

% set parameters
lambda = 0.2;                   % sparsity regularization
overlap = 4;                    % the more overlap the better (patch size 5x5)
up_scale = 2;                   % scaling factor, depending on the trained dictionary
maxIter = 20;                   % if 0, do not use backprojection

% load dictionary
load('Dictionary/D_1024_0.15_5.mat');

% change color space, work on illuminance only
im_l_ycbcr = rgb2ycbcr(im_l);
im_l_y = im_l_ycbcr(:, :, 1);
im_l_cb = im_l_ycbcr(:, :, 2);
im_l_cr = im_l_ycbcr(:, :, 3);

% image super-resolution based on sparse representation
[im_h_y] = ScSR(im_l_y, 2, Dh, Dl, lambda, overlap);
[im_h_y] = backprojection(im_h_y, im_l_y, maxIter);

% upscale the chrominance simply by "bicubic" 
[nrow, ncol] = size(im_h_y);
im_h_cb = imresize(im_l_cb, [nrow, ncol], 'bicubic');
im_h_cr = imresize(im_l_cr, [nrow, ncol], 'bicubic');

im_h_ycbcr = zeros([nrow, ncol, 3]);
im_h_ycbcr(:, :, 1) = im_h_y;
im_h_ycbcr(:, :, 2) = im_h_cb;
im_h_ycbcr(:, :, 3) = im_h_cr;
im_h = ycbcr2rgb(uint8(im_h_ycbcr));

% bicubic interpolation for reference
im_b = imresize(im_l, [nrow, ncol], 'bicubic');

% read ground truth image
im = imread('Data/Testing/gnd.bmp');

% compute PSNR for the illuminance channel
bb_rmse = compute_rmse(im, im_b);
sp_rmse = compute_rmse(im, im_h);

bb_psnr = 20*log10(255/bb_rmse);
sp_psnr = 20*log10(255/sp_rmse);


% show the images
figure, 
subplot(131),imshow(im_l);title('原图')
subplot(132),imshow(im_h);
title(['PSNR for 稀疏表示',num2str( sp_psnr)]);
subplot(133), imshow(im_b);
title(['PSNR for 双立方插值',num2str(bb_psnr)]);


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58

三、运行结果

在这里插入图片描述

四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 何培亮,舒倩.基于稀疏表示的红外图像去噪算法研究[J].红外. 2018,39(10)

3 备注
简介此部分摘自互联网,仅供参考,若侵权,联系删除

文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。

原文链接:qq912100926.blog.csdn.net/article/details/126086317

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。