How do I change an image to binary?
3 次查看(过去 30 天)
显示 更早的评论
I have a picture of a black wrench with a gray background. I need to figure out a threshold value that separates the two so that I can set the background pixels to 0 and the pixels of the wrench to 1. I just need help figuring out the threshold value and extract the background pixels vs. the wrench pixels. I think I can figure out how to then change them to either 1 or 0.
0 个评论
采纳的回答
Star Strider
2016-3-6
See the im2bw function in the Image Processing Toolbox. Experiment until you get the result you want.
2 个评论
Star Strider
2016-3-6
Without your image to work from, I can only guess at a solution. A grayscale image (that I assume you have) is a 2D matrix and has unit8 values from 0 to 255. You may have to ‘cut and try’, not uncommon with any signal processing problem.
Start with something like:
BinImg = GrayImg >127;
then display it with imshow to see the result. Then just vary the threshold up or down until you get the result you want.
更多回答(2 个)
Ahmet Cecen
2016-3-6
编辑:Ahmet Cecen
2016-3-6
ImageSegmenter should help you if you have the toolbox, since you sound like a novice user. http://www.mathworks.com/help/images/image-segmentation-using-the-image-segmenter-app.html
Otherwise use the histogram function. If you are lucky, it will be shaped like the back of a camel and you can find a valley between to peaks, then use that value as your threshold. http://www.mathworks.com/help/matlab/ref/histogram.html
There is also a function that finds an automatic threshold for you if you trust it, but it also requires the toolbox: http://www.mathworks.com/help/images/ref/graythresh.html
0 个评论
Walter Roberson
2016-3-6
pixvals = sort(YourGreyImage(:));
middle_value = pixvals(round(end/2));
BWimage = YourGreyImage < middle_value;
0 个评论
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!