我编写了自己的强度转换函数以查找图像的逆向:
function EnhancedImage = transform(image,transformation)
if transformation == "inverse"
if islogical(image)
EnhancedImage = 1 - image;
disp("Binary");
elseif size(image,3) == 1
EnhancedImage = 255 - image;
disp("GreyScale");
end
end
end
如果我向其发送二进制图像,则该功能可以正常工作
im = imread('cameraman.tif');
img = transform(im2bw(im),'inverse');
但是,当我再次反转生成的图像transform(img,'inverse')
时,由于isologic(image)返回false(我检查了),所以它不起作用。当我使用内置的补偿函数检查它时,它返回true。我通过使用if all(image(:) == 0 |image(:) == 1)
代替了等轴测条件来解决了这个问题,它似乎可以正常工作,但是我无法弄清楚为什么等轴测逻辑将不起作用,以及为什么它总是返回false。
答案 0 :(得分:1)
要反转逻辑图像,请使用布尔求反运算符:
EnhancedImage = ~image;
使用算术(1 - image
)时,输出为数字而不是逻辑。逻辑矩阵是一个单独的类,不算作数字,但它们会自动转换为数字矩阵以应用算术运算。