thresholding for multiple values

14 views (last 30 days)
Matpar
Matpar on 7 Aug 2019
Edited: Matpar on 7 Aug 2019
Hi all i have my thresholding code here and i am trying to do a thresholding processing for multiple types of thresholding in the same go!!!
I am new and i am not sure if this is possible but can a professional assist me where I am going wrong and add comments so that I get the understanding of it!!
I am getting loads of errors and I am not sure where to beging as a beginner!!
Thanks in advance for you consideration and assistance!!!
*********** My Code *******************************
b=imread("bird.jpg");
Gbird=rgb2gray(sc);
t=mean(Gbird(:));
t1=meadian(Gbird(:));
t2=[50,100,150,200];
[r, c]=size(Gbird);
Msc=zeros(r,c);
for i=1:r
for j=1:c
if Gbird(i,j)>t,t1;t2;
Msc(i,j)=1;
end
end
end
imshow(Msc), figure;
imshow(Gbird), figure;
imshow(sc), figure;
subplot(1,3,1), imshow(sc), title('Binary Image Of The Car');
subplot(1,3,2), imshow(Gbird), title('Grayscalee Image Of The Car');
subplot(1,3,3), imshow(Msc), title('Original Image Of The Car');

Answers (2)

dpb
dpb on 7 Aug 2019
t1=meadian(Gbird(:));
median is misspelled...
What do you want/expect as a result? Logicals don't work that way; you'll have to test for each level.
As written, even if the logical test worked, you would only have a '1' in the Msc array for all locations which had a value greater than the least of those in your list of various t* -- not a way to locate which would be greater than each threshold. To do that you would need to be able to store a logical plane for each of the levels--6 total so would need a r x c x 6 3D array.
The way to do something like this in ML would be to loop over the number of levels and do the logical test as vector operation. Something otoo--
...
thresh=[mean(Gbird(:));median(Gbird(:));[50:50:200].']; % the threshold levels desired
nTh=numel(thresh);
Msc=false([size(Gbird) nTh]);
for i=1:nTh
Msc(:,:,i)=(Gbird>thresh(i));
end
  5 Comments
dpb
dpb on 7 Aug 2019
I don't understand what it means "for the threshold equal to the values", sorry.
Where did this come from? Can you show a link to the original?

Sign in to comment.


Matpar
Matpar on 7 Aug 2019
Screenshot 2019-08-07 at 17.38.04.png
  1 Comment
Matpar
Matpar on 7 Aug 2019
Edited: Matpar on 7 Aug 2019
This is how far i have gotten but it seems like i am more confused than you are dpb!
b=imread("bird.jpg");
Gbird=rgb2gray(b);
whos
t=100;150;200
[r, c]=size(Gbird);
Msc=zeros(r,c);
for i=1:r
for j=1:c
if Gbird(i,j)>t
Msc(i,j)=1;
end
end
end
imshow(Msc), figure;
imshow(Gbird), figure;
imshow(b), figure;
subplot(1,3,1), imshow(b), title('Binary Image Of The Car');
subplot(1,3,2), imshow(Gbird), title('Grayscalee Image Of The Car');
subplot(1,3,3), imshow(Msc), title('Original Image Of The Car');

Sign in to comment.

Community Treasure Hunt

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

Start Hunting!