Исходное решение, которое я предложил в комментариях, было:
merged_image = cat(3, false_pixel, true_pixel, false_negative);
imshow(merged_image)
В результате получается изображение, в котором истинные отрицательные пиксели черного цвета:
(Пожалуйста, прости легенду вверху, я использовал твои изображения и мне было лень ее удалять.)
Если есть вероятность совпадения между тремя изображениями, этоподход я бы использовал.Если вы хотите, чтобы TN был белым, вместо добавления пикселей к нужному каналу вы можете вычесть их из двух других каналов:
% turn images into logical arrays to use in indexing
true_pixel = logical(true_pixel);
false_pixel = logical(false_pixel);
false_negative = logical(false_negative);
% create RGB channels for all-white image
r_channel = ones(size(true_pixel));
g_channel = ones(size(true_pixel));
b_channel = ones(size(true_pixel));
% leave pixels in true_pixel image green
r_channel(true_pixel) = 0;
b_channel(true_pixel) = 0;
% leave pixels in false_pixel image red
g_channel(false_pixel) = 0;
b_channel(false_pixel) = 0;
% leave pixels in false_negative image blue
r_channel(false_negative) = 0;
g_channel(false_negative) = 0;
% merge into RGB image
merged_image = cat(3, r_channel, g_channel, b_channel);
imshow(merged_image)
Результат:
Другая возможность - использовать проиндексированные изображения, как вы делали изначально.Самый простой способ сделать это - сгенерировать различные индексы {1,2,3}
в объединенном изображении в вашем цикле, так что-то вроде этого в вашем последнем цикле (и аналогичный код в двух других):
...
false_negative(i,j) = cc(i,j);
merged_image(i,j) = cc(i,j)*3;
...
Затем в конце объедините все 3 цвета в одну цветовую карту:
imshow(uint8(merged_image), 'ColorMap', [1 1 1; 0 1 0; 1 0 0; 0 0 1])