Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于matlab的图像反向绿色通道响应提取_Matlab_Image Processing - Fatal编程技术网

基于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

我想用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
    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