Я написал свою собственную функцию преобразования интенсивности, чтобы найти инверсию изображения:
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')
, оно не работает из-за логического (изображение), возвращающего false (я проверял).Он возвращает true, когда я проверяю его с помощью встроенной функции imcomplement.Я исправил проблему, используя if all(image(:) == 0 |image(:) == 1)
вместо логического условия, и, кажется, оно работает просто отлично, но я не могу понять, почему логический метод не будет работать и почему он продолжает возвращать false.