【发布时间】:2014-11-06 12:12:34
【问题描述】:
我正在尝试实现一个简单的图像超分辨率算法(基于 DWT 的分辨率增强 ) 在下面的论文中
http://www.ripublication.com/aeee/52_pp%20%20%20405-412.pdf
我尝试使用Matlab实现本文图3中的算法。代码如下。
img1 = imread('lena1.jpg'); %original High resolution image
[height, width, dim] = size(img1);
%%Downsampling the image by averaging
avgfilter = fspecial('average', [2 2]);
avgimg = filter2(avgfilter, img1);
img = avgimg(1:2:end,1:2:end); %Input low resolution image
[LL,LH,HL,HH] = dwt2(img,'haar'); %Decomposing
%Bicubic interpolation by factor 2 on each subbands
LL1 = imresize(LL,2,'bicubic');
LH1 = imresize(LH,2,'bicubic');
HL1 = imresize(HL,2,'bicubic');
HH1 = imresize(HH,2,'bicubic');
%% Calculating Difference image
for i=1:256
for j=1:256
img3(i,j,:) = img(i,j,:) - LL1(i,j,:);
end
end
for i=1:256
for j=1:256
LH13(i,j,:) = img3(i,j,:) + LH1(i,j,:);
HL13(i,j,:) = img3(i,j,:) + HL1(i,j,:);
HH13(i,j,:) = img3(i,j,:) + HH1(i,j,:);
end
end
%bicubic interpolation(Here alpha = 2;Hence alpha/2 = 1)
img31 = imresize(img3,1,'bicubic');
LH131 = imresize(LH13,1,'bicubic');
HL131 = imresize(HL13,1,'bicubic');
HH131 = imresize(HH13,1,'bicubic');
img4 = idwt2(img31,LH131,HL131,HH131,'haar'); %IDWT
t = uint8(img4)
imshow(t);
imsave;
但是我得到了一个完全出乎意料的输出图像。为什么会这样。请帮助。提前致谢。
输入图片:
输出图像:
【问题讨论】:
-
“但是我得到了一个完全出乎意料的输出图像” - 那么你期待什么,你得到了什么?您希望我们阅读论文并为您检查您的代码吗?
-
@RogerRowland 我没有足够的声誉来添加图像。这就是为什么我无法添加图像。我得到的输出几乎是一张暗图像,而不是清晰的图像.
-
那么也许你只需要在显示之前做一个拉伸(直方图均衡)?
-
几乎可以肯定您的输出不是
imshow期望的数据类型和数据范围的组合。试试imshow(t,[]); -
每当我读到“完全出乎意料”时,我都会想:他/她有没有得到一个迅猛龙作为输出?你不能放一张图片,但你可以把一个图片链接! ;) 将其上传到 imageshank 或其他东西中
标签: matlab image-processing interpolation dwt