How to apply a different b/w threshold to each row of the image?
    6 views (last 30 days)
  
       Show older comments
    
Hi,
I would convert an image from grayscale to black-and-white using the im2bw function, and I need to apply a different threshold to each row of the image. Which is the most efficient way to do this? Is there a way to avoid the "for" cycle?
Thank you very much.
2 Comments
  Image Analyst
      
      
 on 22 Jan 2020
				Roman, it would be something like
[rows, columns, numberOfColorChannels] = size(theImage);
binaryImage = false(rows, columns);
for row = 1 : rows
    % Get the threshold for this row - however you do it (I don't know).
    thisThreshold = whatever;
    % Now threshold/binarize the image for this row only.
    binaryImage(row, :) = theImage(row, :) > thisThreshold;
end
Accepted Answer
  Andrew Bliss
      
 on 13 Jun 2016
        Depending on the input type of your image, you may be able to just do a simple thresholding operation (as below), otherwise you'll have to delve a little deeper into image processing.
asdf=imread('example.tif');
figure,imshow(asdf)
zxcv=rgb2gray(asdf);
figure,imshow(zxcv)
thresh=[50*ones(325,1);150*ones(325,1)]; %here you set the threshold for each row
threshMatrix=repmat(thresh,1,600);
BW=zxcv>threshMatrix;
figure,imshow(BW)
More Answers (1)
  Image Analyst
      
      
 on 14 Jun 2016
        
      Edited: Image Analyst
      
      
 on 14 Jun 2016
  
      No, you'll have to use a for loop. It's not a problem though. It will be very fast. No need to worry about for loops that are only a few thousand iterations.
Why do you need a different threshold for each row anyway?
You might be able to use a different function. There are new binarization functions. See Steve's blog:
7 Comments
  Image Analyst
      
      
 on 15 Jun 2016
				OK. I have a nice manual/interactive thresholding utility in my File Exchange if you're interested: http://www.mathworks.com/matlabcentral/fileexchange/29372-thresholding-an-image
See Also
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


