Coloring pixels with a specific color

Is it possible to create an image (like the original) in which only the desired pixels are colored?
For example, I want to color white only the pixels with the numbers 25 to 27 (present inside 'grayLevel'). Any ideas?
rgb = imread('example.jpg');
%% Matrix of pixels
Number_Of_Rows = height(rgb);
Number_Of_Columns = width(rgb);
grayLevel = zeros(Number_Of_Rows,Number_Of_Columns);
for Row = 1:Number_Of_Rows
for Column = 1:Number_Of_Columns
grayLevel(Row,Column) = rgb(Row, Column);
end
end

 採用された回答

Image Analyst
Image Analyst 2023 年 1 月 24 日

0 投票

You need to somehow get the gray scale image from the RGB image though, maybe like
grayImage = rgb2gray(rgbImage);
Then you can use imoverlay
mask = (grayImage >= 25) & (grayImage <= 27);
rgbImage = imoverlay(grayImage, mask, 'Color', 'w');

8 件のコメント

Alberto Acri
Alberto Acri 2023 年 1 月 25 日
Thank you for your reply. How can I create mask in case I want to use values inside a vector?
For example: v = [25; 26; 27; 30]
Image Analyst
Image Analyst 2023 年 1 月 25 日
編集済み: Image Analyst 2023 年 1 月 25 日
mask = (grayImage == v(1)) | (grayImage == v(2)) | (grayImage == v(3)) | (grayImage == v(4));
rgbImage = imoverlay(grayImage, mask, 'Color', 'w');
Alberto Acri
Alberto Acri 2023 年 1 月 25 日
Is there any way to compact the line with mask?
Image Analyst
Image Analyst 2023 年 1 月 25 日
You could put it into a loop
mask = grayImage == v(1);
for k = 2 : length(v)
mask = mask | (grayImage == v(k));
end
rgbImage = imoverlay(grayImage, mask, 'Color', 'w');
Alberto Acri
Alberto Acri 2023 年 1 月 26 日
Thanks for the answer @Image Analyst! Whereas, if I have a V matrix of the type 3x2 where each row represents the coordinate of the pixel I want to color white? How can I do that?
Image Analyst
Image Analyst 2023 年 1 月 26 日
Try this
for k = 1 : size(V, 1)
row = V(k, 1);
column = V(k, 2);
grayImage(row, column) = 255; % Or 65535 for uint16 images.
end
Alberto Acri
Alberto Acri 2023 年 1 月 26 日
And how can I visualize them? Using for example 'imoverlay'?
Image Analyst
Image Analyst 2023 年 1 月 26 日
No, if you have a gray scale image and you just want white, not a "color", then you don't need imoverlay. You can just use imshow:
imshow(grayImage, []);

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeImages についてさらに検索

製品

リリース

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by