matlab使用几何变换将图像进行缩放init=imread('lena.bmp');%读取图像 [R, C]= size(init); %获取图像大小 X = 2; % X轴缩放量 Y = 2;% Y轴缩放量 res = zeros(X * R, Y * C);%构造结果矩阵。每个像素点默认初始化为0 (黑色) tras = [X 0 0;0 Y 0;0 0 1]; %缩放的变换矩阵 for i= 1 : X * R for j= 1:Y * C temp=[i;j;1]; temp= tras * temp; %矩阵乘法 x = uint8(temp(1, 1)); y = uint8(temp(2, 1));%0变换后的位置判断是否越界 if(x<=R)&&(y<=C)&&(x>=1)&&(y>=1) res(i, j)=init(x,y); end end end subplot(121); imshow(uint8(init)); title('原图') subplot(122); imshow (uint8(res)); title('缩放图像');
时间: 2024-01-18 22:02:12 浏览: 53
这段代码的作用是将lena.bmp图像进行2倍缩放。缩放的过程采用的是几何变换的方法,即通过对原图像的每个像素点进行坐标变换,得到缩放后的像素点坐标,然后根据坐标在结果矩阵中进行插值。
具体步骤如下:
1. 读取lena.bmp图像并获取图像大小。
2. 构造结果矩阵,大小为原图像的2倍。
3. 构造缩放变换矩阵tras,其中X和Y分别为X轴和Y轴的缩放量。
4. 对结果矩阵中的每个像素点进行坐标变换。
5. 判断变换后的像素点坐标是否越界(即是否在原图像范围内)。
6. 如果没有越界,则在结果矩阵中插入原图像中对应的像素值。
最后,通过subplot函数将原图像和缩放后的图像显示在同一张图像中。
阅读全文