2014-07-04 150 views
-3

我试图做这样的图像上的一些图像处理:MATLAB:转换一个3信道24位的bmp图像分成1个信道16位的BMP图像

enter image description here

这是一个24位的BMP图像。

在MATLAB中我得到了以下信息:

>> x = imread('1.bmp'); 
>> size(x) 

ans = 

    200 150  3 

这表明它有3个通道,一个用于每个R,G和B.

这意味着每个像素将具有的8三个分量每个位。

我想要做的是使用MATLAB或OpenCV将此图像转换为16位,一个通道(即一种颜色),然后进行一些图像处理。我的图像处理算法正在处理16位图像。

+0

你的意思是像[rgb2gray](http://www.mathworks.de/de/help/images/ref/rgb2gray.html)或其他不同的东西? –

+0

@RogerRowland目前还不清楚在结果图像中来自每个像素的位数(来自rgb2gray)。 – user2799508

+0

转换后它将成为'double'。 –

回答

3

由于即使在RGB中,图像也是灰度,所以只需要其中一个通道具有灰度图像。您还可以使用rgb2gray()功能。

然后,您可以使用im2uint16()将其转换为16位无符号整形图像。

+0

感谢您的快速回复。顺便说一句如何保存这个最终的16位图像?这将是我将发送给我的老板的形象。 – user2799508

+0

imsave? Easy peasy –

+0

'imsave'用于保存在图形窗口中显示或存储在手柄中的图像。如果您有一个包含图像数据的变量,请使用'imwrite'。 – rayryeng