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)
| 归档时间: |
|
| 查看次数: |
1276 次 |
| 最近记录: |