ima = double(rgb2gray(uint8(ima)));
特别注意在在使用rgb2gray这个函数将3通道转化成单通道的时候,必须先将这个图像转化成uint8类型。
如果不进行转化的话,由于此处的ima在读取之后变成了double数据类型,直接使用rgb2gray(ima)得到的矩阵的取值范围是在0-1范围之内的!这与造成imshow显示图像为全白的原因是一样的,imshow函数和rgb2gray函数,都会将double类型的数据视作0-1数值范围内的,如果原数据中含有大于1的数值,则这些数值都会被改为1!而imshow和rgb2gray函数把uint8类型的数据视作0-255范围之内的!
参考Imshow https://blog.csdn.net/tm807782912/article/details/46879315
ima = double(imread('data/house.png'));ima = double(rgb2gray(uint8(ima)));特别注意在在使用rgb2gray这个函数将3通道转化成单通道的时候,必须先将这个图像转化成uint8类型。如果不进行转化的话,由于此处的ima在读取之后变成了double数据类型,直接使用rgb2gray(ima)得到的矩阵的取值范围是在0-1范围之内的!这与造成imshow显示图像为全白的原因是一样的,imshow函数和rgb2gray函数,都会将dou
错误原因:读入的图片是三个维度的彩色图片,应该转换成二维的灰度图像。使用函数
rgb
2gray
()将真彩色图像转换为灰度图像,即灰度化处理。
G=
rgb
2gray
(f);
imhist(G);
这样的问题,要么是数据类型定义冲突;
就是编程过程
中
不细心的小错误,尤其在图像处理
中
,原图习惯用小写,比如 f ,灰度变换后用长大写 F, 然后在后面调用灰度值时候 f F 弄混就出现以上问题了。特别
坑
爹!!!
例:正确的:
ObjVal(m*(k
拟解决问题:
Matlab
报错:错误使用
rgb
2gray
>parse_inputs (第 79 行) MAP 必须为 m x 3 的数组。请对
RGB
和灰度图像使用 im
2gray
。
下述程序块你读取一张彩色图片,并转为灰度图像后显示。
[X,map] = imread("laina.bmp");
newmap =
rgb
2gray
(map);
set(0,'defaultFigurePosition',[100,100,1000,500]); %修改图形图像位置的默认设置
set(0,'de.
错误信息:错误使用 bsxfun,不支持混合的整数类输入。
出错
gradient,g(2:n-1,:) = bsxfun(@rdivide,(f(3:n,:)-f(1:n-2,:)),h)。
问题解决:把数据类型转换成double可以解决:[Fx,Fy]=gradient(double(gray));
fileName='grass5.png';
img=imread(fileName);
gray=
rgb
2gray
(img);
[Fx,Fy]=gradient(double(gray));
Gamma_0_75=I.^(0.75);
"Integers can only be raised to positive integral powers."这句话翻译过来就是说整数的幂次只能是正整数~解决方法是把类型为uint8类型的矩阵转为double类型,将程度修改为下面这样就可正常运行了!
I=imread...
以R、G、B为轴建立空间直角坐标系,则
RGB
图的每个象素的颜色可以用该三维空间的一个点来表示,
而Gray图的每个象素的颜色可以用直线R=G=B上的一个点来表示。于是
rgb
转gray图的本质就是寻找
一个三维空间到一维空间的映射,最容易想到的就是射影(即过
rgb
空间的一个点向
matlab
rgb
2gray
是
Matlab
中
的一个函数,用于将
RGB
彩色图像转换为灰度图像。它的语法如下:
grayImage =
rgb
2gray
(
rgb
Image)
其
中
,
rgb
Image是
RGB
彩色图像,grayImage是转换后的灰度图像。函数将
RGB
图像的三个通道进行加权平均,然后将结果保存到grayImage
中
。这个函数在图像处理和
计算机视觉
领域经常被使用。
RuntimeError: Calculated padded input size per channel: (1 x 1). Kernel size: (5 x 5). Kernel size c