trouble using im2bw for image thresholding
이전 댓글 표시
Hello, I need to threshold an image. This is what I've tried (see below) but I just get every pixel of the image with a value of 1. The original data is an ascii file. If it isn't possible to use im2bw in this situation then can anyone suggest an alternative way of thresholding?
Thanks
imagedata2 = dlmread('C:\data\3d_cells\17_8um_exp0_002_bf_run1.asc');
clims=[500 4000];
figure('Name','');
image2=imagesc(imagedata2,clims);colormap gray;
level = graythresh(image2);
BW2 = im2bw(image2,level);
clims = [0,1.5];
figure;
imagebw=imagesc(BW2,clims); colormap gray
채택된 답변
추가 답변 (1개)
Sean de Wolski
2011년 5월 17일
level = graythresh(imagedata2);
BWS = im2bw(imagedata2,level);
If this doesn't work what are class is imagedata2?
class(imagedata2)
and what is the Otsu effectiveness metric?
[level, em] = graythresh(imagedata2);
댓글 수: 4
Natasha
2011년 5월 20일
Natasha
2011년 5월 20일
Natasha
2011년 5월 20일
Sean de Wolski
2011년 5월 20일
Yes, the behavior your seeing is expected and I would say not properly documented. Graythresh requires that the data be uint8 so it silently converts your data to uint8. The conversion method bins all data close to each other together it doesn't pick a good range. That's why I asked what class your data is. If it's uint16, you should convert it to uint8 by selecting the range of values yourself and then thresholding. I think this behavior needs to have better documentation and I've considered writing an enhancement request.
카테고리
도움말 센터 및 File Exchange에서 Image Type Conversion에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!