资源简介
利用双线性插值算法、双三次插值算法、对图像进行重建并进行算法结果的比较,展示出原图像和插值图像的傅立叶幅度谱。
代码片段和文件信息
%双三次插值具体实现
clcclear;
fff=imread(‘E:\超分辨率处理算法的程序\bicubic\lenna.bmp‘);
ff =rgb2gray(fff);%转化为灰度图像
[mmnn]=size(ff); %将图像隔行隔列抽取元素,得到缩小的图像f
m=mm/2;
n=nn/2;
f =zeros(mn);
for i=1:m
for j=1:n
f(ij)=ff(2*i2*j);
end
end
k=5; %设置放大倍数
bijiao1 =imresize(fk‘bilinear‘);%双线性插值结果比较
bijiao =uint8(bijiao1);
a=f(1:);
c=f(m:); %将待插值图像矩阵前后各扩展两行两列共扩展四行四列
b=[f(11)f(11)f(:1)‘f(m1)f(m1)];
d=[f(1n)f(1n)f(:n)‘f(mn)f(mn)];
a1=[a;a;f;c;c];
b1=[b;b;a1‘;d;d];
ffff=b1‘;
f1=double(ffff);
g1 =zeros(k*mk*n);
for i=1:k*m %利用双三次插值公式对新图象所有像素赋值
u=rem(ik)/k;
i1=floor(i/k)+2;
A=[sw(1+u) sw(u) sw(1-u) sw(2-u)];
for j=1:k*n
v=rem(jk)/k;
j1=floor(j/k)+2;
C=[sw(1+v);sw(v);sw(1-v);sw(2-v)];
B=[f1(i1-1j1-1) f1(i1-1j1) f1(i1-1j1+1) f1(i1-1j1+2)
f1(i1j1-1) f1(i1j1) f1(i1j1+1) f1(i1j1+2)
f1(i1+1j1-1) f1(i1+1j1) f1(i1+1j1+1) f1(i1+1j1+2)
f1(i1+2j1-1) f1(i1+2j1) f1(i1+2j1+1) f1(i1+2j1+2)];
g1(ij)=(A*B*C);
end
end
g=uint8(g1);
imshow(uint8(f));title(‘缩小的图像‘); %显示缩小的图像
figureimshow(ff);title(‘原图‘); %显示原图像
figureimshow(g);title(‘双三次插值放大的图像‘); %显示插值后的图像
figureimshow(bijiao);title(‘双线性插值放大结果‘); %显示插值后的图像
mse=0;
ff=double(ff);
g=double(g);
ff2=fftshift(fft2(ff)); %计算原图像和插值图像的傅立叶幅度谱
g2=fftshift(fft2(g));
figuresubplot(121)imshow(log(abs(ff2))[810]);title(‘原图像的傅立叶幅度谱‘);
subplot(122)imshow(log(abs(g2))[810]);title(‘双三次插值图像的傅立叶幅度谱‘);
%基函数代码:
function A=sw(w1)
w=abs(w1);
if w<1&&w>=0
A=1-2*w^2+w^3;
elseif w>=1&&w<2
A=4-8*w+5*w^2-w^3;
else
A=0;
end
end
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 786486 2017-12-19 23:01 超分辨率处理算法的程序\bicubic\lenna.bmp
文件 1972 2019-09-02 21:03 超分辨率处理算法的程序\bicubic\双三次插值、与双线性插值的程序、计算原图像和插值图像的傅立叶幅度谱\Unti
目录 0 2019-08-31 10:24 超分辨率处理算法的程序\bicubic\双三次插值、与双线性插值的程序、计算原图像和插值图像的傅立叶幅度谱
目录 0 2019-09-02 21:05 超分辨率处理算法的程序\bicubic
目录 0 2019-08-31 14:50 超分辨率处理算法的程序
----------- --------- ---------- ----- ----
788458 5
评论
共有 条评论