Please take a look at attached photo.
i was asked to get the RGB's max pixel for the gray scale.
how do i do that?
gray = max(RGB)

답변 (3개)

Walter Roberson
Walter Roberson 2012년 10월 4일

0 개 추천

I might be misinterpreting, but I think you are asking for
grayImage = max(YourImage, 3);

댓글 수: 8

Adela
Adela 2012년 10월 4일
having the Red(255),Green(0),Blue(0) , he wanted the max(RGB) as the max of gray scale.
Jan
Jan 2012년 10월 4일
@Adela: Exactly. And this is what Walter's code does.
Perhaps you want to divide by 255 afterwards?
Btw, who is "he"?
Adela
Adela 2012년 10월 4일
sorry. "he" refers to my professor. i'll try it out:) btw, wonder if you may know the idea/purpose behind of doing this? because my professor did not mention much, but i'm curious.
Image Analyst
Image Analyst 2012년 10월 4일
편집: Image Analyst 2012년 10월 4일
It's probably to get the background image to do a "flat field" correction. For the blue ink pixels, the max will most likely be the red channel and the blue text won't show up, so this will get you a grayscale version of the image without the ink. Then you can divide by that max image (the background image) to "background-correct" the image. It's a simple way for you students, but there are probably some more accurate (less noisy) ways of doing it, but this is fine for instructional purposes and to just illustrate the concept.
Adela
Adela 2012년 10월 4일
Hi, i actually dont understand this argument if the ink is blue, so the max will be the blue channel not red if the ink is red, then the max will be the red channel and if the ink is green, the max value is also the green channel?
Image Analyst
Image Analyst 2012년 10월 4일
You're right - I misspoke.
Jan
Jan 2012년 10월 4일
@Adela: You professor is payed for explaining such details. Ask him. He will remember your activity and curiosity.
Adela
Adela 2012년 10월 4일
it was part of my project and he is not going to give more details. Probably he wants me to extract the red component, because most of my sample images is pinky.

댓글을 달려면 로그인하십시오.

Adam Mackay
Adam Mackay 2022년 10월 28일

0 개 추천

Max RGB selects the channel with the highest decimal value
Ie: 128, 10, 35 would become 255,0,0 since the red channel has the highest value
In the case of grey scale or grey images
you would normally have all channels equal, for example
127,127,127, in which case there are no channels with the heighest value, so for that particular pixel the values would remain the same for all channels (unchanged)
An example can be observed in this image, in which the colour of the jumper or sweater remains grey for a large portion of it.
Image Analyst
Image Analyst 2022년 10월 28일

0 개 추천

Here is code with all the methods discussed here:
rgbImage = imread('peppers.png');
subplot(2, 2, 1);
imshow(rgbImage);
impixelinfo;
title('Original Image');
% Get the max for each pixel, and the channel in which the max occurs.
[grayImage, channelImage] = max(rgbImage, [], 3);
subplot(2, 2, 2);
imshow(grayImage);
impixelinfo;
title('Max of each color channel');
subplot(2, 2, 3);
imshow(channelImage, []);
impixelinfo;
title('Channel where max value is');
% Assign the 1's to red, 2's to green, and 3's to blue.
z = zeros(size(rgbImage, 1), size(rgbImage, 2), 'uint8');
r = 255 * uint8(channelImage == 1);
g = 255 * uint8(channelImage == 2);
b = 255 * uint8(channelImage == 3);
rgbImageMax = cat(3, r, g, b);
subplot(2, 2, 4);
imshow(rgbImageMax, []);
impixelinfo;
title('MAX image (Adam''s definition)');

카테고리

도움말 센터File Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기

질문:

2012년 10월 4일

댓글:

2022년 10월 28일

Community Treasure Hunt

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

Start Hunting!

Translated by