用matlab截取图像的一部分?

1.读入给定四幅图像并正确显示;
2.分别截取四幅图像中一部分正确显示

已经给定了四幅图像,分别是JPG,gif,PNG等格式,1我会,请问2怎么截图,好像要涉及坐标。请问那个函数能比较简单的截图?请写下完整程序,谢啦~

1、首先打开matlab,在命令行窗口中输入a=[1 5 6 7;8 12 14 16;6 3 5 7],创建一个3行4列的a矩阵,如下图所示。

2、输入x=find(a>10),找到a数组中大于10的元素的下标,如下图所示。

3、按回车键之后,可以看到找到大于10的元素下标,下标位置是按一列开始数,一列一列数的。

4、输入a(x)=[],将a数组中大于10的元素全部删除,如下图所示。

5、最后按回车键之后,可以看到a数组大于10的元素全部删除了,如下图所示。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2017-11-25
% 由于读入图像的方法你已经掌握,所以这里只示范怎样截取图像的部分
% 需要说明的主要有以下几点:
% 1、图像数据有索引色和真彩色这两种不同格式,截取前需要搞清楚是哪一种;
% 2、截取图像实际上就是取出数组的部分;
% 3、数组第一维为高度方向(从上到下),第二维为宽度方向(从左向右)。

% 载入MATLAB系统自带图像数据
load durer X map

% 显示原图像
subplot(1,2,1)
image(X)
colormap(map)
axis off; axis image
title('原图')

% 原图像为索引色,这个示范截取其右上角(宽度1/2,高度1/3)
subplot(2,2,2)
w = size(X,2); h=size(X, 1);
image( X(1:fix(h/3), fix(w/2):end) )
axis off; axis image
title('右上角(宽1/2,高1/3)')

% 下面示范示范截取真彩图
% 首先把索引色图像转换为真彩色,然后截取左下角(宽度1/3,高度1/2)
subplot(2,2,4)
rgb = ind2rgb(X, map);
w = size(rgb,2); h = size(rgb,1);
image( rgb(fix(h/2):end, 1:fix(w/3), :) )
axis off; axis image
title('左下角(宽1/3,高1/2)')追问

谢谢您了,你前面回答很好。就是有一个问题,有一幅图像是gif,彩色的,但我
a=imread(‘sst.gif’); %sst是图像名称%
imshow(a)
之后,本来是彩色的图片显示出来后的figure却是黑白的,老师说还要调用map色板,可我不知道语法,能否说一下?

还没问完,我发到你私信里了,我提高悬赏到70分了,就选你为正确答案了。请帮忙回答,多谢la~

追答

首先,你读取gif图像的方法有问题。因gif是索引色图像,所以读图像的时候仅仅读图像数据是不够的,还要带上调色板信息。至于怎样用调色板,前面其实已经示范过。

你的程序可以改成:
[a,map]=imread(‘sst.gif’); %sst是图像名称%
image(a)
colormap(map)

但这样有个问题:map是针对整个figure而非axes的,如果你有多个gif图要在同一个窗口里面显示,使用哪个图的map?事实上,使用哪个map都不合适。

这个问题怎么解决呢?其实上次也已经给了你解决的办法——使用ind2rgb把索引图转换成真彩图,真彩图的图像数据已经包含了完整的信息,和map无关。

追问

截图时,有一副彩色的JPG图片,我用whos看了一下,是这样的:
c 3000x2000x3 18000000 uint8 array %c是我令图片的变量
我用了 cat=c(10:125,20,250); imshow(cat) 结果显示出来了所截图像的一部分,但是截图是灰色的,怎么把颜色带进去呢? 让它显示成原来的颜色

追答

问题已经在另一个新开的帖子里解决了,我就不多说了。
其实真彩图的截取在我上面给的代码倒数第三行已经给出来了,你可能之前还是没看太明白。

至于你说的表达式
cat=c(10:125,20,250);
我认为是错误的,在6.5和R2007b里面测试也都报错,不知道你用的是什么版本?按常理,其他版本也不会允许这样的表达式。

本回答被提问者和网友采纳

matlab编程求指导。我用matlab截取了图像的一块,比如说是20*20的,想...
1.有一张图交myMap是256*256的,提取出来放在newMap里面 2.从myMap的(n,m)的坐标开始提取。使用的坐标是右上角为原点,x水平向右,y垂直向下。3.图像是rgb的 matlab的图像坐标是右上原点,x垂直向下 newMap(1:32,1:32,:)=myMap(m:m+32-1,n:n+32-1,:);如果要提取图像的...

我用matlab截取了图像的一块,比如说是20*20的,怎么把这其中400个点的信...
a=imread('a.jpg');a向量就是图片的信息 b=rgb2gray(a);将图片的信息转化为灰度值,矩阵b的行和列就是横坐标和纵坐标,数值就是灰度值!mean(mean(b))得到这块图片的平均灰度值 祝你学习愉快!

matlab中plot出来的图像如何截取一部分?如图所示
matlab绘图函数plot(0:15,y)得到的就是x坐标轴范围为0-15的曲线,改为plot(5:15,y)得到的就是x坐标轴范围为5:15的曲线了,也就是截了一段出来了😁

matlab截取一张图在原图中的图片
matlab截取一张图在原图中的图片的步骤如下:1、读取原始图片:使用imread函数读取原始图片,例如将名为myimage.png的图片读取到变量img中:img=imread('myimage.png');2、选择截取区域:使用imrect函数选择要截取的图片区域,并按下Enter键进行确认。例如,你可以使用以下语句创建一个imrect对象并选择左上...

matlab怎么截取三维图像的某一个截面啊,例如截取z=2的平面
截取三维图的一个平面;x=-10:1e-2:10;y=-10:1e-2:10;[X,Y]=meshgrid(x,y);Z=sin(X)+sin(Y);v=[1,1];figure contour(X,Y,Z,v,'color','m');%只画z=1这条等值线,颜色为粉色;

怎么用matlab在256*256的图象里截取一块32*32的图象块
1.有一张图交myMap是256*256的,提取出来放在newMap里面 2.从myMap的(n,m)的坐标开始提取。使用的坐标是右上角为原点,x水平向右,y垂直向下。3.图像是rgb的 matlab的图像坐标是右上原点,x垂直向下 newMap(1:32,1:32,:)=myMap(m:m+32-1,n:n+32-1,:);如果要提取图像的...

matlab中plot已经生成图形,怎么截取其中一段啊,求具体步骤
可以用axis([x1 x2 y1 y2]);控制图像的显示范围 但是数据的间隔是由你原来的输入数据决定的 plot的时候只是把这些数据点连起来,显示的曲线实际上是一段段折线拼成的 你可以用axis控制输出的范围,但是在没有更多的数据的情况下 放大了的图,只能清楚低让你看到其折线,并不能显示你想象中平滑的...

怎么用matlab截图啊?
接下来,导入你想要截图的图片。复制图片到MATLAB的工作目录或与代码文件同级的文件夹中。使用"imread"函数读取图片,例如,如果图片名为"example.jpg",你可以这样写:image=imread('example.jpg')。这样,程序就会加载图片到变量image中。为了实时查看处理效果,可以添加"imshow"函数,如imshow(image),这...

matlab图像提取(点击提取指点区域图像)
第二步,设置点击按钮的callback 函数 为点击按钮读取文本框中的图像。第三步,显示文本框中的图像在指定区域。第四步,获取鼠标的坐标(都是matlab现成的函数)点击后按照事先设定好的数据,将图片相应的矩阵数据保存下来,生成一个新的N.jpg 第五步,将相应坐标的图像的像素赋值为0~255的数字。有...

MATLAB 我想截取图像中间3\/4的部分,程序这样写不对吗?为什么出来的列数...
f = imread('C:\\Users\\Administrator\\Desktop\\LDZD1.BMP');[M,N,W] = size(f);K = 3\/4; rmv = fix(M*(1-K)\/2);cmv = fix(N*(1-K)\/2);I3 = f(rmv:M-2*rmv,cmv:N-2*cmv,:); subplot(121); imshow(f); title('原图');subplot(122); imshow(I3); title('3\/4...

相似回答