필터 지우기
필터 지우기

Finding particular R, G, B value by comparing with threshold and fetching its corresponding pixel locations from table

조회 수: 3 (최근 30일)
I have a 20*3 rgbvalues matrix of an image
and given below table cx and cy are its corresponding pixel locations
and now i want to check in the rgbvalues table which satisfying the following condition,
((R>=0 && R<=100) && (G>=0 && G<=100) &&(B>=0 && B<=100)) and the corresponding cx and cy pixel location values. can anybody help me?

채택된 답변

Image Analyst
Image Analyst 2018년 5월 19일
Try this:
mask = (R>=0 & R<=100) & (G>=0 & G<=100) & (B>=0 & B<=100);
cxInMask = cx(mask);
cyInMask = cy(mask);
Take special note that I am using only single ampersands, not double ones because I want to do operations on a logical vector.
For your data, like Jan said, both will be empty since no row satisfies your criteria.
  댓글 수: 3
Image Analyst
Image Analyst 2018년 5월 27일
No, using a single ampersand will create a binary image - a mask image.
"How can be make it possible?" I already showed you. Just do what I said. Don't change it back to what you said which will make it not work again. Make adjustments to the values if you want but don't change the ampersands to double ampersands.

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

추가 답변 (2개)

Jan
Jan 2018년 5월 19일
None of the colors in the table satisfies B <= 100. What ever the relation between the two tables is and whatever "corresponding cx and cy pixel location" means, while no element of B is matching, the condition is false in every case.
This solution seems to be trivial. Therefore I guess, you meant something else. Then please explain it again.

meenu v
meenu v 2018년 5월 28일
편집: meenu v 2018년 5월 28일
Some part of the code is given
pq =impixel(Original_Img(:,:,1:3), cxInMask,cyInMask);
R=pq(:,1);
G=pq (:,2);
B=pq (:,3);
if ((x (1) > 58 && x (1) < 200) && (y(1) > 401 && y(1) < 650))
if ((R>=0 && R<=250)&&(G>=0 && G<=50)&&(B>=0 && B<=255))
disp ('The content is very low in this region.');
elseif ((R>=0 && R<=190)&&(G>=0 && G<=90)&&(B>=250 && B<=255))
disp ('The content is high in this region.');
end
end
R, G, B vector obtained will be like the one shown in above question. The values will change in every exceution .
Running the code produces an error like,
  • _Operands to the and && operators must be convertible to logical scalar values.
Error in Untitled (line 25) If ((R>=0 && R<=250)&&(G>=0 && G<=1)&&(B>=0 && B<=255))
_ * How to resolve this error?
  댓글 수: 2
Image Analyst
Image Analyst 2018년 5월 28일
편집: Image Analyst 2018년 5월 28일
If you'd look in the workspace, you'd see that you never defined an x and y. Plus R, G, and B are most likely full images, not single values so you should be using single ampersands like I've told you already, or if you want the R, G, and B at a single point then you should index them or use the pq variable you created.
meenu v
meenu v 2018년 5월 29일
this is not what i meant to ask. i will start a new question for that. Thank u....

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

카테고리

Help CenterFile Exchange에서 Convert Image Type에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by