基于matlab的图像反向绿色通道响应提取
我想用MATLAB提取图像的反向绿色通道响应。我已经实现了它,但我不知道它是否正确。我将非常感谢你的帮助。基于matlab的图像反向绿色通道响应提取,matlab,image-processing,Matlab,Image Processing,我想用MATLAB提取图像的反向绿色通道响应。我已经实现了它,但我不知道它是否正确。我将非常感谢你的帮助。 更通用的方法是 %// Green channel y = x(:, :, 2); %// Invert the green if isinteger(y) z = intmax(class(y))-y; elseif isfloat(y) z = 1 - y; elseif islogical(y) z = ~y; else err
更通用的方法是
%// Green channel
y = x(:, :, 2);
%// Invert the green
if isinteger(y)
z = intmax(class(y))-y;
elseif isfloat(y)
z = 1 - y;
elseif islogical(y)
z = ~y;
else
error('Strange image you''ve got there...');
end
注意:这假设图像在RGB颜色空间中,此外,如果它属于类float
,则它假设值标准化为1。如果这可能会有所不同,您可能需要再进行几次检查
在任何情况下:记录这些限制 更通用的方法是
%// Green channel
y = x(:, :, 2);
%// Invert the green
if isinteger(y)
z = intmax(class(y))-y;
elseif isfloat(y)
z = 1 - y;
elseif islogical(y)
z = ~y;
else
error('Strange image you''ve got there...');
end
注意:这假设图像在RGB颜色空间中,此外,如果它属于类float
,则它假设值标准化为1。如果这可能会有所不同,您可能需要再进行几次检查
在任何情况下:记录这些限制 255对于颜色深度更高的图像可能是错误的。亲爱的,我只反转了绿色通道的响应,绿色通道只有0到255个强度级别。但这并不一定适用于所有图像。所以@Daniel R的评论是正确的。请添加所有重要的问题,以避免此类评论。我已上传images@ArslanAhmad:对于每个通道8位的图像,绿色通道具有0..255。这是很常见的,但不是一个常数。对于颜色深度较高的图像,255可能是错误的。亲爱的,我只反转绿色通道响应,绿色通道只有0到255个强度级别。但这并不一定适用于所有图像。所以@Daniel R的评论是正确的。请添加所有重要的问题,以避免此类评论。我已上传images@ArslanAhmad:对于每个通道8位的图像,绿色通道具有0..255。这是很常见的,但不是一个常数。很好地使用了
intmax
!我发现我的方法和提议的方法没有区别one@ArslanAhmad:这是因为您只有uint8
图像。如果将代码与uint16
或uint32
图像一起使用,则会失败。我说过我的代码更通用。我没有说你的实现是错误的;它只适用于您的特定环境。非常感谢@Rody oldenhuis对intmax
的出色使用!我发现我的方法和提议的方法没有区别one@ArslanAhmad:这是因为您只有uint8
图像。如果将代码与uint16
或uint32
图像一起使用,则会失败。我说过我的代码更通用。我没有说你的实现是错误的;它只适用于你的特定环境。非常感谢@Rody Oldenhuis