Я не знаю автоматического способа изменить цвет нанесенных точек в зависимости от цвета пикселя за ними. Имейте в виду, что вам необходимо использовать только ссылку восемь предопределенных спецификаций цвета (например, 'r' для красного или 'b' для синего). Вы можете выбрать цветовую спецификацию RGB для нанесенных точек, которая не характерна для основного изображения. Например:
h = plot(0,0,'Marker','x','Color',[1 0.4 0.6]); %# Plot a pink x
Вы можете программно найти наименее распространенный цвет с помощью простого кода, который выбирает наименее часто используемые значения цвета в изображении. Вот один пример:
rawData = imread('peppers.png'); %# Read a sample RGB image
imData = reshape(rawData,[],3); %# Reshape the image data
N = hist(double(imData),0:255); %# Create a histogram for the RGB values
[minValue,minIndex] = min(N); %# Find the least used RGB values
plotColor = (minIndex-1)./255; %# The color for the plotted points
image(rawData); %# Plot the image
hold on;
hp = plot(500.*rand(1,20),350.*rand(1,20),... %# Plot some random points
'Marker','o','LineStyle','none',...
'MarkerFaceColor',plotColor,'MarkerEdgeColor',plotColor);
Приведенный выше код сначала преобразует данные изображения в матрицу M на 3, где M — количество пикселей изображения, а три столбца содержат значения красного, зеленого и синего соответственно. Для каждого столбца выполняется объединение значений с использованием HIST, то для каждого столбца находится значение с наименьшим бином (т. е. с самой низкой частотой). Эти три значения становятся тройкой RGB для цвета графика. Когда на изображение накладываются случайные точки этого цвета, получается следующий сюжет:
![альтернативный текст](https://i37.photobucket.com/albums/e77/kpeaton/example_colors.jpg)
Обратите внимание, что приведенный выше код выбирает ярко-синий цвет для точек графика, который не отображается на изображении и, таким образом, обеспечивает хороший контраст.
person
gnovice
schedule
03.03.2010