Я чувствую, что многое из того, что вы хотите, уже встроено.К сожалению, я не понимаю ваше условие.Если каждое значение цвета находится между 200 и 250, вы хотите, чтобы пиксель был зеленым, верно?Я только что попробовал, но нет пикселя, который бы соответствовал этим условиям.Я попробовал некоторые другие значения, и затем он начинает работать, но вы должны проверить область wichi, которую вы точно хотите:
imdata = imread('pic.jpg');
for i=1:size(imdata,1)
for j=1:size(imdata,2)
%'...' is just a code-linebreak in matlab for readability
if imdata(i,j,1)>150 && imdata(i,j,1)<250 && imdata(i,j,1)>200 && ...
imdata(i,j,1)<250 && imdata(i,j,3)>100 && imdata(i,j,3)<250
%lets say your green is [50,200,0]
imdata(i,j,1)=50;
imdata(i,j,2)=200;
imdata(i,j,3)=0;
end
end
end
imshow(imdata)
Вы можете перейти к другим логическим условиям, таким как (imdata(i,j,1)<50 || imdata(i,j,1)>150)
или imdata(i,j,1)==150
или почти любое другое условие, которое вы можете придумать.Также вы можете взглянуть на значения, чтобы найти правильные пороги для вас
figure
subplot(2,2,1)
mesh(imdata(:,:,1)) %red
subplot(2,2,2)
mesh(imdata(:,:,2)) %green
subplot(2,2,3)
mesh(imdata(:,:,3)) %blue
subplot(2,2,4)
imshow(imdata)
В Matlab я бы попытался перейти к матричным операциям, а не циклически проходить через каждый пиксель, но это решение гораздо проще понятьи реконструировать.