为什么demosaic会在原始图像中引入大于最大像素的像素值?

时间:2015-04-30 14:00:47

标签: matlab

我读取原始图像并检查像素的最大值(max(rawImage(:)))。最大值是4095.但是,在我将其转换为彩色图像并检查最大值后,我在所有3个通道中获得的最大值大于4095。为什么在使用demosaic之后我得到的值大于4095?

rawImage = uint16(fread(rawFile,[cols rows],'uint16'));
colorImage = demosaic(rawImage,'rggb');
red = colorImage(:,:,1);
green = colorImage(:,:,2);
blue = colorImage(:,:,3);

2 个答案:

答案 0 :(得分:0)

demosaic docs表示使用以下语法:

RGB = demosaic(I, sensorAlignment)
  

RGB具有相同的类   就像我。

由于您将rawImage转换为uint16,colorImage也将是uint16,最大可能值为2 ^ 16-1 = 65535

答案 1 :(得分:0)

由于demosaic内部执行如此多的过滤器;结果像素的自然程度大于最大输入值。对于某些像素,您可以有5001,对于其他像素,您可以获得5023等,这是很正常的。

在MATLAB中,当您在8位容器中有8位数据时,它会自动使所有大于255到255的值饱和。类似地,对于16位容器中的16位数据,它将值饱和为65535。 #39; s容器/数据类型决定剪切值而不是数据。

由于在16位容器中有12位数据,因此如果MATLAB大于65535而不是4095,MATLAB将只会饱和。可以做的是手动饱和大于4095到4095的所有值。不会影响结果。