我读取原始图像并检查像素的最大值(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);
答案 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的所有值。不会影响结果。