我现在有这样一个数字病理图像:
首先,我使用以下代码转图像为灰度:
img=imread('DigitalPathology8.png');
figure;
imshow(img)
hsv=rgb2hsv(img);
s=hsv(:,:,2);
当我尝试使用下面的代码以二进制化这个灰度图像:
bw = imbinarize(s,'global');
figure
subplot(2,1,1)
imshow(s)
subplot(2,1,2)
imshow(bw)
我得到了这样的形象:这有什么错我的代码?当我申请相同的算法其他相似图片:我能得到二值图像只蓝色细胞是白色和其他细胞,包括背景是黑色的。所以我也希望同样的结果,我将相同的代码,以我提到的第一个图像之后。可能有人请帮助我吗?
你应该更好的利用rgb2gray()
(look here)为自己的转化:
grey=rgb2gray(img)
这应该让你的东西是这样的:
相反,全球性阈值的,我会建议更复杂的方法,如Otsu,这将让你更好的结果:
不过,如果你只是想提取的,而不是你的形象的一个简单的阈值处理的版本,蓝色的细胞,你应该使用像MaxEntropy一个完全不同的方法的灰度图像。这会给你这样的事情:
和这个
该阈值方法似乎并没有被包含在MATLAB,但qazxsw POI。
您也可以尝试总共不同的方法,基于plugin can be found进行阈值检测蓝点:使用这种方法,你会设置具有蓝色色比给定的阈值色距每个像素为白色。这应该给你这样的事情(红色标记表示图像的前景中):
参考颜色:color similarity
对于这种方法我把RGB颜色(17.3,32.5,54.5)为基准色,我的最大距离为210如果你有ImageJ的,你可以这种方式interactivly,前阵子我写了一个.As你可以看到,这方法还检测错误的细胞,其通过针对距离和已选定的基准色的高值引起的。这样的错误可通过选择更合适的参考颜色和更小的距离值被最小化。