通过改变像素来缩小图片

img=imread('D:\pictures\lena1.jfif');%读入原彩色图像
imshow(img);%展现图像
%这个功能相当于把图片缩小,不同于裁剪,而是根据规定步长进行像素点的取舍
img_256=img(1:2:end,1:2:end);
%各一行取一列,步长为2,图的大小为256
%(取的第一个像素点是1,第二个是1+2=3,以此类推)
figure,imshow(img_256);
img_128=img(1:4:end,1:4:end);
figure,imshow(img_128);

提问:不知道为什么运行出来是三个并列的图片,应该是一个呀?
(解答:
语句*img=imread(‘D:\pictures\lena1.jfif’);读入的是彩色图像,颜色有三个维度,所以读进去的图片是三通道的。而语句img_256=img(1:2:end,1:2:end);*中没有对另外的一个维度说明,所以会默认第三个维度是存在的,*img_256=img(1:2:end,1:2:end,:)这样就是截了三个通道了,彩色的图要照顾到第三个维度。
ps:suoplot语句可以使图像img_256和img_128显示在同一个框里,并且在同一行。例如语句
subplot(1,2,1); imshow(img);
subplot(1,2,2);imshow(img_256)*中121和122的意思:一行二列第一个位置,第二个位置

在这里插入图片描述在这里插入图片描述在这里插入图片描述

更改后的代码:

img=imread('D:\pictures\lena1.jfif');%读入原彩色图像
subplot(1,3,1),imshow(img);%展现图像
%这个功能相当于把图片缩小,不同于裁剪,而是根据规定步长进行像素点的取舍
img_256=img(1:2:end,1:2:end,:);
%各一行取一列,步长为2,图的大小为256
%(取的第一个像素点是1,第二个是1+2=3,以此类推)
subplot(1,3,2),imshow(img_256);
img_128=img(1:4:end,1:4:end,:);
subplot(1,3,3),imshow(img_128);

运行结果:
在这里插入图片描述

img=imread('D:\pictures\lena1.jfif');%读入原彩色图像
imshow(img);%展现图像
%只保留三个像素值,<100的像素置为0,100<= <200的置为150,>200的置为255
img_3=img;
%legth=find(img<100);%(函数find找具体点的位置)找所有大于100的像素值,运行结果非常多
%[row col]=find(img<100);%同上,但是改为用二维数组保存,这样运行结果较少
img_3(img_3<100)=0;
img_3((img_3>=100)&(img_3<200))=150;
img_3(img_3>=200)=255;
figure,imshow(img_3);

在这里插入图片描述
Ps:日常学习记录,随着日后的学习再来补充(已初步解决)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值