Няма автоматизиран начин, за който знам, че вашите начертани точки да променят цвета си въз основа на цвета на пиксела зад тях. Имайте предвид, че не трябва да използвате само осем предварително дефинирани цветови спецификации (т.е. „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