У меня есть изображение, которое я открыл в Matlab, используя imshow
, и я хочу заменить цвет каждого пикселя на значение (140,50,61) новым цветом (150 , 57,80). Если кто-нибудь мог бы посоветовать, как я могу это сделать.Замените определенный цвет на изображении другим цветом Matlab
1
A
ответ
2
Предполагая A
быть входных данных изображения, это может быть один подход -
%// Initialize vectors for old and new pixels tuplets
oldval = [140,50,61]
newval = [150,57,80]
%// Reshape the input array to a 2D array, so that each column would
%// reprsent one pixel color information.
B = reshape(permute(A,[3 1 2]),3,[])
%// Find out which columns match up with the oldval [3x1] values
matches = all(bsxfun(@eq,B,oldval(:)),1)
%// OR matches = matches = ismember(B',oldval(:)','rows')
%// Replace all those columns with the replicated versions of oldval
B(:,matches) = repmat(newval(:),1,sum(matches))
%// Reshape the 2D array back to the same size as input array
out = reshape(permute(B,[3 2 1]),size(A))
Пример запуска -
>> A
A(:,:,1) =
140 140 140
40 140 140
A(:,:,2) =
50 20 50
50 50 50
A(:,:,3) =
61 65 61
61 61 61
>> out
out(:,:,1) =
150 140 150
40 150 150
out(:,:,2) =
57 20 57
50 57 57
out(:,:,3) =
80 65 80
61 80 80
1
bsxfun
путь я бы решил. Однако, если вы не знакомы с ним, вы можете извлечь каждый канал из своего изображения, использовать три логических маски для каждого канала и объединить их все с помощью logical
AND. Выполнение AND найдет те пиксели вашего изображения, которые ищут эту конкретную тройку RGB.
Таким образом, мы соответствующим образом устанавливаем выходные сигналы каждого канала и восстанавливаем изображение для получения выходного сигнала.
Поэтому, учитывая ваше входное изображение A
, можно сделать:
red = A(:,:,1); green = A(:,:,2); blue = A(:,:,3);
mred = red == 140; mgreen = green == 50; mblue = blue == 61;
final_mask = mred & mgreen & mblue;
red(final_mask) = 150; green(final_mask) = 57; blue(final_mask) = 80;
out = cat(3, red, green, blue);
Смежные вопросы
- 1. Замените определенный цветной диапазон на изображении другим цветом Matlab
- 2. Заменить определенный цвет другим в изображении/спрайте
- 3. Matlab накладывающийся цвет на изображении
- 4. Заменить цвет другим цветом в изображении с помощью PHP
- 5. Заменить цвет другим цветом в изображении с помощью CSS3
- 6. Замените белый на изображении с акцентом цвета
- 7. Java - Проверьте, является ли определенный пиксель на изображении определенным цветом
- 8. Как изменить определенный цвет в изображении на другой цвет
- 9. Замените только углы повернутого изображения с другим цветом
- 10. Как изменить цвет текста, определенный цветом фона?
- 11. Как заменить цвет другим цветом в BufferedImage
- 12. Как увядать цвет кнопки с другим цветом?
- 13. Сравните цвет кнопки с другим цветом - андроид
- 14. Цвет каждой ошибки с другим цветом
- 15. Как заменить цвет от UIImage другим цветом
- 16. Сохранить рисунок MATLAB с другим цветом фона
- 17. Как изменить цвет на изображении?
- 18. Найти определенный цвет в 2D-изображении
- 19. подсветка (цвет) аномалии на изображении
- 20. JAVA: замените один цвет другим с помощью ColorModel
- 21. Замените конкретный цвет RGB другим изображением, используя PHP
- 22. PHP - Заменить цвет в изображении
- 23. Отслеживать линию на изображении MATLAB
- 24. Как сделать NaN другим цветом в Matlab с imagsc?
- 25. Заполните определенный цвет на картинке
- 26. Замените ПРОЗРАЧНУЮ часть изображения, установленную в изображении с другим изображением?
- 27. Показаны различные значения в изображении с различным цветом в Matlab
- 28. Заполнение цветом на изображении с питоном
- 29. Каждый маркер с другим цветом
- 30. Imagemagick замените цвет, но сохраните прозрачность
вы можете сказать мне, что заменить 'oldval (:) 'с? старый цвет RGB (140,50,61) – Tak
@shepherd Проверьте изменения? – Divakar
Спасибо :). можно ли написать некоторые комментарии, объясняющие набор строк кода, которые вы написали? :) – Tak