用matlab做图像的灰度变换,指令I=rgb2gray(A)执行的时候总是报错,用的是matlab2009a

程序是A=imread('D:\Cameraman.bmp');
I=rgb2gray(A);
subplot(2,2,1);
imshow(I);
title('原图');
subplot(2,2,2);
imhist(I);
J=imadjust(I,[],[0.3 0.7],1);
subplot(2,2,3);
imshow(J);
subplot(2,2,4);imhist(J);
报错??? Error using ==> rgb2gray>parse_inputs at 82
MAP must be a m x 3 array.

Error in ==> rgb2gray at 35
X = parse_inputs(varargin{:});

Error in ==> xu1 at 2
I=rgb2gray(A);

这个问题我刚好也遇到过,不一定是楼上说的这种情况,比如说把matlab画的一条曲线以bmp格式保存下来,然后imread之后A也是二维的。
我的理解是这样的,如果图像中颜色种类较少,bmp读取出来会把颜色以索引形式存下来(而不是RGB分量形式)。使用 [A, map] = imread(...),A不同位置的数值在map里对应的颜色分量才是该位置的真实颜色。
对于这样的A,做灰度变换只要对map做变换就行了,如matlab里的例子:
[X,map] = imread('trees.tif');
gmap = rgb2gray(map);
figure, imshow(X,map), figure, imshow(X,gmap);
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-06-15
程序是没有问题的,问题出在你的图片'D:\Cameraman.bmp',rgb2gray(X)的意思是把一幅由R G B 三个通道表征的图像 通过一个比例公式转换为 仅有一个通道的图像 即灰度图像,由出错的提示“??? Error using ==> rgb2gray>parse_inputs at 82
MAP must be a m x 3 array.
”显然你读入的图像并不是R G B 三通道标准的图像
大概你用的是个灰度图片,可以不用调用rgb2gray()这个函数,直接进行后续处理。

用matlab做图像的灰度变换,指令I=rgb2gray(A)执行的时候总是报错,用的...
我的理解是这样的,如果图像中颜色种类较少,bmp读取出来会把颜色以索引形式存下来(而不是RGB分量形式)。使用 [A, map] = imread(...),A不同位置的数值在map里对应的颜色分量才是该位置的真实颜色。对于这样的A,做灰度变换只要对map做变换就行了,如matlab里的例子:[X,map] = imread('tre...

用matlab做图像的灰度变换,指令I=rgb2gray(A)执行的时候总是报错
都double转化了,就已经是二值图像了 图片读进来,直接进行灰度化

在下有个matlab中的灰度线性拉伸的程序,一直调不出结果,各位大侠帮忙...
A=imread('C:\\Users\\Administrator\\Desktop\\11.bmp');% 线性灰度线性变换(拉伸)程序 a=20,b=250,c=50,d=200;A=rgb2gray(A);figure;imshow(A);X=A;[p,q]=size(X); % 获取输入图像的行列数 Y=zeros(p,q);for i=1:p for j=1:q if X(i,j)<a Y(i,j)=c;else if X(i...

matlab灰度变换对比度展宽问题,如何用程序转换啊~~如图
I = rgb2gray(I);%如果是灰度图就不用先变换 end I = double(I) \/ 255;I1 = uint8(255 * I * 0.5 + 0.5);imshow(I1);imwrite(I,'test.jpg')

怎样用matlab进行图象变换
1、图像要转换成灰度图像才能进行此操作。im=imread("image_filename");%要处理的图像文件名 im=rgb2gray(im);t_im=255-im;imshow(im),title("原图像");figure,imshow(t_im),title("变换后的图像");2、这部分代码若需要,请发邮件到huajizhao@sohu.com索取。

matlab中for循环的使用
不是空的,赋值的时候出错了,我改了一点,不知道对你有用没。。clear;close all I=imread('1.jpg');%读入原始jpg格式图像 figure plot(1,1)imshow(I)W=size(I,2); %得到图像高度 I1=rgb2gray(I);%将原图像转化为灰度图象 figure;subplot(221);imshow(I1);title('灰度图像');I2=m...

matlab导出的图像,提取中间有效部分
image3=image2(find(mean2<250),:,:); %% 取image2中灰度均值<250的行形成新图像 figure, imshow(image3)imwrite(image3, 'image1.jpg'); %% 将图像数据保持成jpg格式文件。注:如果用matlab菜单中的save as导出的话,会出现图像比实际大的情况。要得到跟矩阵相同大小的图像,可以用...

求MATLAB代码
MATLAB 程序实现如下:I=imread('xian.bmp');I1=rgb2gray(I);subplot(1,2,1),imshow(I1);title(' 灰度图像');axis([50,250,50,200]);grid on;%显示网格线axis on;%显示坐标系J=double(I1);J=40*(log(J+1));H=uint8(J);subplot(1,2,2),imshow(H);title(' 对数变换图像');axis([50,...

matlab 判断图像每个像素值的灰度值,灰度值小于某值时用白色显示...
假设A是图像所代表的矩阵,value为某一灰度值,num为图像A中该灰度值的像素个数,则有:[r,c]=find(A==value);num=length(r);或者num=sum(sum(A==value));

Matlab边缘检测问题
f=rgb2gray(im2double(f));imshow(f)title('原始图像');[m,n]=size(f);ftemp=zeros(m,n);rowhigh=m-1;colhigh=n-1;高斯滤波 for x=2:1:rowhigh-1 for y=2:1:colhigh-1 mod=[f(x-1,y-1) f(x-1,y) f(x-1,y+1); f(x,y-1) f(x,y) f(x,y+1);f(x+1,y-...

相似回答