二值化灰度图像包含了太多的噪音

问题描述 投票:0回答:1

我现在有这样一个数字病理图像:

enter image description here

首先,我使用以下代码转图像为灰度:

img=imread('DigitalPathology8.png');
figure;
imshow(img)
hsv=rgb2hsv(img); 
s=hsv(:,:,2); 

而我得到这个灰度图像:enter image description here

当我尝试使用下面的代码以二进制化这个灰度图像:

bw = imbinarize(s,'global'); 
figure
subplot(2,1,1)
imshow(s)
subplot(2,1,2)
imshow(bw)

我得到了这样的形象:enter image description here这有什么错我的代码?当我申请相同的算法其他相似图片:enter image description here我能得到二值图像只蓝色细胞是白色和其他细胞,包括背景是黑色的。所以我也希望同样的结果,我将相同的代码,以我提到的第一个图像之后。可能有人请帮助我吗? enter image description here

image matlab image-processing grayscale hsv
1个回答
1
投票

你应该更好的利用rgb2gray()(look here)为自己的转化:

grey=rgb2gray(img)

这应该让你的东西是这样的:

Image converted to grayscale

相反,全球性阈值的,我会建议更复杂的方法,如Otsu,这将让你更好的结果:

Thresholded image

不过,如果你只是想提取的,而不是你的形象的一个简单的阈值处理的版本,蓝色的细胞,你应该使用像MaxEntropy一个完全不同的方法的灰度图像。这会给你这样的事情:

First image thresholded

和这个

Second image thresholded

该阈值方法似乎并没有被包含在MATLAB,但qazxsw POI。

您也可以尝试总共不同的方法,基于plugin can be found进行阈值检测蓝点:使用这种方法,你会设置具有蓝色色比给定的阈值色距每个像素为白色。这应该给你这样的事情(红色标记表示图像的前景中):

参考颜色:color similarity

Image of the reference color

对于这种方法我把RGB颜色(17.3,32.5,54.5)为基准色,我的最大距离为210如果你有ImageJ的,你可以这种方式interactivly,前阵子我写了一个Thresholding by color distance.As你可以看到,这方法还检测错误的细胞,其通过针对距离和已选定的基准色的高值引起的。这样的错误可通过选择更合适的参考颜色和更小的距离值被最小化。

© www.soinside.com 2019 - 2024. All rights reserved.