2

我有下面这张是胰腺细胞的照片在此处输入图像描述

我想做的是能够获得每个细胞的膜(红色细丝),然后进行镶嵌,以了解细丝的长度。到目前为止,我已经尝试使用 matlab 网站上给出的示例,但结果并不是很好......

 I = imread('picture.tiff');
 I_gray = rgb2gray(I);
 [~, threshold] = edge(I_gray, 'sobel');
 fudgeFactor = .5;
 BWs = edge(I_gray,'sobel', threshold * fudgeFactor);
 se90 = strel('line', 3, 90);
 se0 = strel('line', 3, 0);
 BWsdil = imdilate(BWs, [se90 se0]);

在此处输入图像描述

我一直在寻找其他方法来做几个小时,但没有任何令人满意的结果......有没有办法做到这一点?也许除了 matlab 之外的其他软件可能更有效。提前谢谢你!

4

2 回答 2

3

我对细胞或镶嵌或其他什么一无所知。但是,如果您想检测非均匀背景中的那些斑点,那么我可能会有所帮助。由于背景不统一,您需要单独分析 blob。您不能只设置一个固定阈值来一次检测所有 blob。首先,您将单独检测每个 blob,然后使用单独的阈值。这是示例

原始图像

im=imread('gxGkH.jpg');
figure,imagesc(im);axis image;

在此处输入图像描述

我只选择蓝色来分析

imb=im(:,:,3);
figure,imagesc(imb);axis image;

在此处输入图像描述

1)模糊图像,因为在模糊后,斑点将在其中心具有局部最大值/最小值

sigma=7;
kernel = fspecial('gaussian',4*sigma+1,sigma);
im2=imfilter(imb,kernel,'symmetric');

figure,imagesc(im2);axis image;

在此处输入图像描述

2)使用分水岭变换分离每个blob区域

% L = watershed(im2);
L = watershed(max(im2(:))-im2);
[x,y]=find(L==0);

画出边界

figure,imagesc(im2),axis image
hold on, plot(y,x,'r.')

在此处输入图像描述

3) 在这里我单独分析每个 blob 并为每个 blob 找到一个 otsu 阈值,然后我检测 blob 并结合所有检测

tmp=zeros(size(imb));

for i=1:max(L(:))
  ind=find(L==i);
  mask=L==i;
  [thr,metric] =multithresh(imb(ind),1);
  if metric>0.7
    tmp(ind)=imb(ind)>thr;
  end
end

去除一些噪音

tmp=imopen(tmp,strel('disk',1));
figure,imagesc(tmp),axis image

在此处输入图像描述

如果背景具有比斑点更高的对比度,那么您不需要在分水岭变换中反转图像。

于 2017-03-09T20:57:47.567 回答
2

我不确定这是否会让你更接近你的问题的解决方案,但我会做的是这样的。请注意,这是一种非常简单和幼稚的方法:

image = imread('picture.tiff'); % load image
image = rgb2hsv(image); % convert to hsv colorspace
image = image(:,:,1); % take the hue channel

binary_im = imbinarize(image); % make binary image

二进制图像应如下所示:

在此处输入图像描述

现在您可以使用数学形态学来消除噪音。您首先创建一个结构元素,然后将其与二进制图像进行卷积:

str_el = strel('disk', 5, 0); % create a round, 5px radius, str_el
closed_im = imclose(binary_im, str_el); % close image with str_el

现在您的新图像应如下所示:

在此处输入图像描述

此时您可以使用另一个形态学操作来找到骨架:

skeleton = bwmorph(closed_im, 'skel', Inf); % Find skeleton image

骨架图像如下所示:

在此处输入图像描述

当然,这种方法远非精确,但可以为您提供有关灯丝长度的总体信息,特别是如果您可以摆脱最终的噪音(骨架的那些附件)。

于 2017-03-06T16:25:41.867 回答