DSP

数字信号处理小实验:插值与抽取

2019-07-13 19:08发布

通过二维序列的差值和抽取,设计一个对自己照片进行放缩的程序。要求显示放缩前后对比图。 使用MATLAB中imread函数读取图片后得到的是一个三维矩阵,要想实现对彩 {MOD}照片的抽取和插值,就要在每个维度上都进行抽取和插值。同时,使用imread函数得到的矩阵是uint8类型的数据,考虑到抽取和插值运算的精度,将矩阵的数据类型转换为double型。 clc,clear; image_data=imread('1_1.jpg'); %读取图片 image_data=im2double(image_data); %数据类型转换 [m,n]=size(image_data(:,:,1)); for i=1:m for j=1:n/2 for k=1:3 y1(i,j,k)=0; end end end for i=1:m/2 for j=1:n for k=1:3 y2(i,j,k)=0; end end end for i=1:m for j=1:n*2 for k=1:3 y3(i,j,k)=0; end end end for i=1:m*2 for j=1:n for k=1:3 y4(i,j,k)=0; end end end for j=1:3 for i=1:m y1(i,:,j)=decimate(image_data(i,:,j),2); %按行抽取 end end for j=1:3 for i=1:n y2(:,i,j)=decimate(image_data(:,i,j),2); %按列抽取 end end for j=1:3 for i=1:m y3(i,:,j)=interp(image_data(i,:,j),2); %按行插值 end end for j=1:3 for i=1:n y4(:,i,j)=interp(image_data(:,i,j),2); %按列插值 end end figure subplot(3,2,1);imshow(image_data);title('原图'); subplot(3,2,3);imshow(y1);title('按行抽取'); subplot(3,2,4);imshow(y2);title('按列抽取'); subplot(3,2,5);imshow(y3);title('按行插值'); subplot(3,2,6);imshow(y4);title('按列插值');