图像重建基于matlab卷积神经网络的图像超分辨率重建含Matlab源码 1816期

Posted 紫极神光

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了图像重建基于matlab卷积神经网络的图像超分辨率重建含Matlab源码 1816期相关的知识,希望对你有一定的参考价值。

一、卷积神经网络的图像超分辨率重建简介

图像超分辨率增强技术在医疗影像、视频监控、航空、多媒体以及日常生活等领域有着较为广泛的应用。随着深度学习网络的发展以及计算机运算能力的不断提升,图像超分辨率增强算法也在持续改进,从早期的仅有三个卷积层的SRCNN发展到现在的基于生成式对抗网络的图像超分辨率增强算法。如今,图像超分辨率增强算法大都是基于生成式对抗网络[1],图像超分辨率重建及其应用正逐渐走向成熟。在生成式对抗网络相关算法的基础上,研究者们还在不断进行相关的优化,例如采样方式、特征提取、卷积层数的改变等等,以使图像超分辨率增强的训练效果越来越好。本文将在基于生成式对抗网络的图像分辨率增强算法基础上,结合陶瓷产品个性化定制等应用场景,进行进一步的改进和优化,以期望获得更好的应用效果。本文重点进行了三个方面的改进和优化:一是对图像的下采样操作进行改进;使用高斯金字塔的下采样方式从而获得低分辨率图片LR,相较于高斯滤波,在训练效果和训练时间上都有一定程度的优化及提升,在保留图中对于训练有利的重要信息的能力有所提高。二是在算法优化过程中,去掉归一化操作;在生成式对抗网络的图像超分辨率重建的实现过程中,通过对算法中归一化操作进行测试,发现归一化操作在实际训练过程中消耗了大量的计算资源,延长了训练时长,因此选择了去掉归一化操作,提高算法效率,缩短训练时长。三是对轻量化图像超分辨率的神经网络进行了研究和应用;对轻量化的图像超分辨率增强算法进行了改进,对训练时长以及重建效果进行了平衡及优化。

1 卷积神经网络的简介
卷积神经网络是一类包含卷积计算且具有深度结构的前馈神经网络,是深度学习的代表算法之一。卷积神经网络有三个基本概念:局部感知域(Local Re cpr tive Field) 、特征映射和池化(Pooling) 。
局部感知域:每一个卷积神经网络的输入都是2828的二维神经元。每一个图像中的像素点的灰度值都对应着2828的神经元。在卷积网络结构中,将每一个灰8度值的像素点用一个很小的区域连接到隐藏层,这个区域就是局部感知域。
特征映射:训练数据输入之后经过处理后从输入层进入隐含层,在输入层与隐含层之间的关系映射就是特征映射。
池化:池化操作主要目的是提取特征更加明显,放大一个包含多个神经元的区域最大的值的操作叫最大池化。

2 图像质量评价指标
对于生成的图像,实验中需要对图像的优化的效果进行评测。主观评价上,感觉图像的分辨率是否增加,图像的质量是否提高,对于图像的感官上会不会存在一些突兀或者不平缓的现象。客观评价就是通过数学计算给出客观数值上的评价。常用的图像质量评价指标一般有平均主观得分MOS、峰值信噪比PSNR、结构相似性S SIM、均方误差MSE等等”
峰值信噪比(PSNR) :峰值信噪比同样是表达不同图像中像素位置的差异。它
与均方误差有着相似之处。峰值信噪比可以表达如下:

峰值信噪比与均方误差相似之处在于都是表达像素的差异,不同的是峰值信噪比的值越大,表示重建效果越好,反之越差。公式中的n表示像素的位数。与MSE不同, PSNR值越高表示图像重建质量越好, 反之则表示越差。

二、部分源代码

% =========================================================================
% Test code for Super-Resolution Convolutional Neural Networks (SRCNN)

% =========================================================================

close all;
clear all;

%% read ground truth image
im  = imread('Set5\\butterfly_GT.bmp');
%im  = imread('Set14\\zebra.bmp');

%% set parameters
up_scale = 3;
model = 'model\\9-5-5(ImageNet)\\x3.mat';
% up_scale = 3;
% model = 'model\\9-3-5(ImageNet)\\x3.mat';
% up_scale = 3;
% model = 'model\\9-1-5(91 images)\\x3.mat';
% up_scale = 2;
% model = 'model\\9-5-5(ImageNet)\\x2.mat'; 
% up_scale = 4;
% model = 'model\\9-5-5(ImageNet)\\x4.mat';

%% work on illuminance only
if size(im,3)>1
    im = rgb2ycbcr(im);
    im = im(:, :, 1);
end
im_gnd = modcrop(im, up_scale);
im_gnd = single(im_gnd)/255;

%% bicubic interpolation
im_l = imresize(im_gnd, 1/up_scale, 'bicubic');
im_b = imresize(im_l, up_scale, 'bicubic');

%% SRCNN
im_h = SRCNN(model, im_b);

%% remove border
im_h = shave(uint8(im_h * 255), [up_scale, up_scale]);
im_gnd = shave(uint8(im_gnd * 255), [up_scale, up_scale]);
im_b = shave(uint8(im_b * 255), [up_scale, up_scale]);

%% compute PSNR
psnr_bic = compute_psnr(im_gnd,im_b);
psnr_srcnn = compute_psnr(im_gnd,im_h);

%% show results
fprintf('PSNR for Bicubic Interpolation: %f dB\\n', psnr_bic);
fprintf('PSNR for SRCNN Reconstruction: %f dB\\n', psnr_srcnn);

figure, imshow(im_b); title('双三次插值');
figure, imshow(im_h); title('SRCNN重建');

%imwrite(im_b, ['Bicubic Interpolation' '.bmp']);
%imwrite(im_h, ['SRCNN Reconstruction' '.bmp']);

三、运行结果



四、matlab版本及参考文献

1 matlab版本
2014a

2 参考文献
[1] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]王子扬.基于卷积神经网络的图像超分辨率重建[D].景德镇陶瓷大学

以上是关于图像重建基于matlab卷积神经网络的图像超分辨率重建含Matlab源码 1816期的主要内容,如果未能解决你的问题,请参考以下文章

图像重建基于matlab迭代步长自适应图像超分辨重建含Matlab源码 048期

图像重建基于matlab L1范数自适应双边总变分超分辨率图像序列重建含Matlab源码 2209期

图像重建基于matlab L1范数自适应双边总变分超分辨率图像序列重建含Matlab源码 2209期

m基于POCS算法的空域序列图像超分辨率重建matlab仿真

图像超分辨率重建之srcnn,基于tensorflow实现

基于深度卷积神经网络和跳跃连接的图像去噪和超分辨