How can I find RGB values of a matrix of coordinates of an image?
조회 수: 5 (최근 30일)
이전 댓글 표시
Hi,
I'm trying to pull the RGB values from a list of (x,y) coordinates that are centers of circles. My plan was to get the matrix of each component (r, g, and b) this way:
P = imread('image'); ...
x = centers(:, 1);
y = centers(:, 2);
rcenters = P(round(x), round(y), 1);
x is a 668 x 1 matrix, and so is y, so I was hoping rcenters would be 668 x 2, but instead it's 668 x 668, which does not make sense to me. I had to round the x and y coordinates to the nearest integer so that it would have integer indices.
How could I get it to return a 668 x 2 matrix with the R value of the x coordinate in column 1 and the R value of the y coordinate in column 2?
Thanks in advance!
댓글 수: 0
채택된 답변
Image Analyst
2019년 7월 22일
(x,y) is NOT (row, column) -- it's (column, row). You've made a very common beginner mistake. Put y first -- P(y, x)
x = round(centers(:, 1));
y = round(centers(:, 2));
rgbValues = zeros(length(x), 3)
counter = 1;
for col = 1 : length(y)
for row = 1 : length(x)
rgbValues(counter, :) = P(y(row), x(col), :);
counter = counter + 1;
end
end
댓글 수: 3
Image Analyst
2019년 7월 23일
Did you see this line in the code:
rgbValues(counter, :) = P(y(row), x(col), :);
That gives you the RGB values. Red is column1, green is col2 and blue is col3.
추가 답변 (2개)
Akira Agata
2019년 7월 23일
Another possible solution:
row = round(centers(:, 1));
col = round(centers(:, 2));
R = arrayfun(@(x,y) P(x,y,1),row,col);
G = arrayfun(@(x,y) P(x,y,2),row,col);
B = arrayfun(@(x,y) P(x,y,3),row,col);
댓글 수: 1
참고 항목
카테고리
Help Center 및 File Exchange에서 Read, Write, and Modify Image에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!