mad*_*mad 3 matlab image image-processing
我有一个灰度图像,我希望这个图像作为RGB图像的三个波段.换句话说,新RGB图像的每个带将是该灰度图像
那是我到目前为止所尝试的:
gray_image=imread('image.pgm');
rgb_image=zeros(size(gray_image,1),size(gray_image,2),3);
rgb_image(:,:,1)=gray_image;
rgb_image(:,:,2)=gray_image;
rgb_image(:,:,3)=gray_image;
>> rgb_image(1,2,1)
ans = 44
>> rgb_image(1,2,2)
ans = 44
>> rgb_image(1,2,3)
ans = 44
Run Code Online (Sandbox Code Playgroud)
您可以看到上面的代码有效,但是当我执行以下命令时:
imwrite(rgb_image,'rgb_image.ppm');
Run Code Online (Sandbox Code Playgroud)
图像全是白色的.如何使用正确的格式保存图像?
gray_image
是类型uint8
而rgb_image
为类型的double
,但在范围内既有值[0..255]
.当matlab保存double
精确图像时,它期望其值在范围内,[0..1]
所有值都大于1
被截断为1
- 最亮的值.这就是为什么rgb_image
使用完全白色的图像保存双精度结果的原因.
使用uint8
类型rgb_imge
:
rgb_image=zeros(size(gray_image,1),size(gray_image,2),3,'uint8');
Run Code Online (Sandbox Code Playgroud)
或者,您可以转换gray_image
为double
gray_image = im2double( gray_image );
Run Code Online (Sandbox Code Playgroud)