Getting RGB values out of an image into a matrix where I can retrieve specific elements

66 次查看(过去 30 天)
Hello, I have tried many ways to find the RGB values from an image and put them into a matrix to retrieve it.
============
I = imread('yellowdot.jpg');
imshow(I)
A = imread('yellowdot.jpg');
Red = A(:,:,1);
Red(250,190)
===========
This code grabs the image and displays the picture and then saves the red values into the matrix "Red". When I retrieve the value no matter the x,y values i put into that last line it outputs "120". When I look into the saved matrix at (250,190) from accessing it from that right hand menu of MatLab it read "254" for that same value which is what it should be.
It's saved as "288 X 384 uint"
I dont really know what uint means but that might be why its having a hard time reading it.
Any help is much appreciated, I'm new to matLab so keeping it simple would be great :)
Zach

采纳的回答

KALYAN ACHARJYA
KALYAN ACHARJYA 2021-2-24
编辑:KALYAN ACHARJYA 2021-2-24
I = imread('yellowdot.jpg');
imshow(I)
A = imread('yellowdot.jpg');
Red = A(:,:,1);
Till here you are doing it correctly.
Here "Red" is a red plane of the A rgb Image, its a 2D array with datatype uint8 (Unsigned interger 8 Bits). When the data type with uint8, its have maximum value 2^8=256, if Pixels considertion satrt from 0, hence maximum pixel value is 255 in any plane for uint8 data type.
If you check the details of A, it may be shown as
A>> "288 X 384X3 uint8" for 3 channels (3D Array), once the extraction of first planes from the 3rd dimentions, it represents the red plane. Hence it may shows
Red>>"288 X 384 uint8"
2nd Section:
"When I retrieve the value no matter the x,y values i put into that last line it outputs "120"
Red(250,190) represent the pixel value/Matrix value at the incices rows 250 and column 190. May be the given image have same color irrespective of any indices location, please do confirm?
More: If you wish to check the pixel value in differrent positions of the image, you can use the following code (by moving the Mouse cursor)
A = imread('yellowdot.jpg');
Red = A(:,:,1);
imshow(Red)
impixelinfo;
:)
  4 个评论
Zachary Steinwachs
Zachary Steinwachs 2021-2-25
So I've been checking my outputs with both the matrix and using the "data cursor" feature when the image comes up. Both the reading the table and "data cursor" feature give me the same output of RGB 254 253 2, for the (250,190) cords but when I output it with that command it gives me RBG values seemingly from a different location. However when I have it retrieve cords (190,250) it outputs what it is suppose to output for (250,190). I guess the x and y cords get mixed up when using that command but idk. Below is the image

请先登录,再进行评论。

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Geometric Transformation and Image Registration 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by