matlab练习程序(图像放大/缩小,放大没有进行插值操作)

cl;
w=0.7; %放大或缩小的宽度
h=1.5; %放大或缩小的高度
img=imread('Corner.png');
imshow(img);
[m n]=size(img);
imgn=zeros(h*m,w*n);

rot=[h 0 0;0 w 0;0 0 1]; %变换矩阵x=h*u,y=w*v
for u=1:m
for v=1:n
pix=[u v 1]*rot;
if (pix(1)>=0.5 && pix(2)>=0.5) %matlab没有(0,0)这样的元素
%操作要取得的是整数,没听说过小数坐标吧.
imgn(round(pix(1)),round(pix(2)))=img(u,v); %放大还没有进行插值,缩小不用插值
end
end
end

figure,imshow(uint8(imgn))

转载于:https://www.cnblogs.com/tiandsp/archive/2012/03/07/2384368.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
编写MATLAB程序实现通过复制/抽取像素来放大/缩小图像的方法如下: 1. 首先,加载需要放大/缩小图像。可以使用`imread`函数来加载图像。 ```matlab img = imread('input.jpg'); ``` 2. 接下来,定义需要放大/缩小的倍数,假设为`scale`。若想放大图像,`scale`值应大于1;若想缩小图像,`scale`值应小于1。 ```matlab scale = 2; % 放大2倍 ``` 3. 根据给定的缩放倍数,计算放大/缩小后的图像尺寸。若图像尺寸为`(M, N)`,则放大后的图像尺寸为`(scale*M, scale*N)`,缩小后的图像尺寸为`(M/scale, N/scale)`。 ```matlab [height, width, ~] = size(img); new_height = round(height * scale); new_width = round(width * scale); ``` 4. 根据计算得到的新尺寸,创建一个新的空白图像。 ```matlab new_img = uint8(zeros(new_height, new_width, 3)); ``` 5. 对于放大操作,将原图像中的像素复制到放大后的图像中。对于缩小操作,从原图像中抽取像素放入缩小后的图像中。使用双重循环遍历原图像的每个像素,并将其复制/抽取到放大/缩小后的图像对应的位置。 ```matlab for i=1:new_height for j=1:new_width orig_i = round(i / scale); orig_j = round(j / scale); new_img(i, j, :) = img(orig_i, orig_j, :); end end ``` 6. 最后,保存放大/缩小后的图像。 ```matlab imwrite(new_img, 'output.jpg'); ``` 通过以上步骤,便可以编写一个MATLAB程序实现通过复制/抽取像素来放大/缩小图像的功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值