【图像重建】基于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']);
- 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] 蔡利梅.MATLAB图像处理——理论、算法与实例分析[M].清华大学出版社,2020.
[2]杨丹,赵海滨,龙哲.MATLAB图像处理实例详解[M].清华大学出版社,2013.
[3]周品.MATLAB图像处理与图形用户界面设计[M].清华大学出版社,2013.
[4]刘成龙.精通MATLAB图像处理[M].清华大学出版社,2015.
[5]王子扬.基于卷积神经网络的图像超分辨率重建[D].景德镇陶瓷大学
文章来源: qq912100926.blog.csdn.net,作者:海神之光,版权归原作者所有,如需转载,请联系作者。
原文链接:qq912100926.blog.csdn.net/article/details/123778034
- 点赞
- 收藏
- 关注作者
评论(0)