怎么培养编程思维:在培养皿上计数菌落(imagej colony counter)

关于怎么培养编程思维的问题,在imagej colony counter中经常遇到, 我有一堆皮氏培养皿充满了点,我想在 Matlab 中计数。

我有一堆皮氏培养皿充满了点,我想在 Matlab 中计数。

例如,该板有 352 个菌落

enter image description here

我试过 ImageJ,但需要做相当多的裁剪出边界,并获得可变的结果。

你有什么建议吗?

14

我对这个问题的方法如下:

使用 Hough 变换识别与培养皿相对应的圆。

使用 Otsu 的方法进行全局阈值处理,仅限于菜肴。

将菌落计数为原始图像的区域最大值,这些最大值在分割图像中表示。

这个file exchange toolbox为我们提供了一个工作循环霍夫变换。

function [count,colonies,bw] = colony_count(I)
I = rgb2gray(im2double(I)); %# Color-to-gray conversion.
[m,n] = size(I);
%# Uncomment this if you have might have some images with light background
%# and dark colonies. It will invert any that seem that way.
%#if graythresh(I) < 0.5
%#    I = imcomplement(I);
%#end
bw = I > graythresh(I); %# Otsu's method.
radii = 115:1:130; %# Approx. size of plate, narrower range = faster.
h = circle_hough(bw,radii,'same','normalise'); %# Circular HT.
peaks = circle_houghpeaks(h, radii, 'npeaks', 10); %# Pick top 10 circles.
roi = true(m,n);
for peak = peaks
    [x, y] = circlepoints(peak(3)); %# Points on the circle of this radius.
    x = x + peak(1); %# Translate the circle appropriately.
    y = y + peak(2);
    roi = roi & poly2mask(x,y,m,n); %# Cumulative union of all circles.
end
%# Restrict segmentation to dish. The erosion is to make sure no dish pixels
%# are included in the segmentation.
bw = bw & bwmorph(roi,'erode');
%# Colonies are merged in the segmented image. Observing that colonies are 
%# quite bright, we can find a single point per colony by as the regional
%# maxima (the brightest points in the image) which occur in the segmentation.
colonies = imregionalmax(I) & bw;
%# Component labeling with 4-connectivity to avoid merging adjacent colonies.
bwcc = bwconncomp(colonies,4);
count = bwcc.NumObjects;

我们使用这样的代码:

I = imread('http://i.stack.imgur.com/TiLS3.jpg');
[count,colonies,mask] = colony_count(I);

我还上传了colony_count函数on the file exchange

您可以检查分割(mask)和菌落标记(colonies)以查看错误的位置:

%# Leave out the changes to mask to just see the colony markers.
%# Then you can see why we are getting some false colonies.
R = I; R(mask) = 255; R(colonies) = 0;
G = I; G(mask) = 0; G(colonies) = 255;
B = I; B(mask) = 0; B(colonies) = 0;
RGB = cat(3,R,G,B);
imshow(RGB);
2

您可以使用一种称为连接组件标签的技术,该技术可以用来区分图像中的不同对象。

首先,您需要通过某种阈值处理使图像二进制化。标记是通过扫描每个像素行两次完成的,一次从左到右,一次从右到左。我们正在寻找对象像素,即值为 1 的像素。

在从左到右的扫描中:对于每个像素p:如果p是对象像素,则从上方或左侧复制标签。如果p是背景像素或p具有标签,则不执行任何操作。

对于从右到左的扫描:对于每个像素p:如果p是对象像素,则从右侧复制标签,否则设置新标签。如果p是背景像素或p有标签,则不执行任何操作。如果存在标签并且p的右侧的像素使 a 不同

例如(来自http://webstaff.itn.liu.se/~bjogu/TNM087-2012/Fo7-2012-AH.pdf的演讲幻灯片):

labeling example

扫描完整个图像后,合并已记录的所有标签(它们连接到同一对象),然后计算不同标签的数量,您将获得计数。

1

我会做的是:

将图像转换为binary image,这可以使用一些threshold on the Intensity来完成。注意点更浅,因此在取阈值后可以执行1-binaryImage。我不知道你为什么说它们是黑色的,但是无论它们是什么颜色,它都是相同的想法。

之后,您可以使用Hough transform并绘制rho and thetahistogram

在该直方图上,您可能会在 rho = = 半径上取第二个阈值。

Added: Detect circles with various radii in grayscale image via Hough Transform

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(139)
Svn更换服务器地址:如何远程访问本地SVN服务器(how to access server remotely)
上一篇
C罗双国籍:在 C++中实现双sqrt(双x)
下一篇

相关推荐

  • css 图片缩放:Unlock the Power of CSS Image Scaling

    CSS 图片缩放是指使用 CSS 来改变图片的大小。它可以通过设置图片的宽度和高度来实现,也可以通过设置图片的缩放比例来实现。代码示例:…

    2023-09-12 07:54:54
    0 17 83
  • css 图片旋转动画:Unlock the Power of CSS Image Rotations!

    示例示例CSS 图片旋转动画可以使用 CSS3 的 `` 属性来实现,具体代码如下:上面的代码中,`.rotate` 是一个 CSS 类,可以应用到图片上,`` 属性指定了动画的名称、持续时间和动画曲线,`@` 定义了动画的关键帧,`` 属性指定了旋转的角度。…

    2023-05-26 00:21:24
    0 94 17
  • cvpr论文格式:A Study of Image Classification Using Deep Convolutiona

    CVPR论文格式是一种用于准备有关计算机视觉和图像处理的学术论文的格式。它是由IEEE Computer Society推出的,旨在使论文准备过程更加高效和简便。CVPR论文格式要求论文应该以双栏形式排版,字体为10磅Times New Roman或11磅Computer Modern,行距为单倍行距,页边距为1英寸,段落间距为半行。此外,论文中的图片、表格和公式也应遵循特定的格式。…

    2023-01-28 11:26:31
    0 68 59
  • css调整图片大小:How to Resize Images with CSS

    使用css调整图片大小,需要使用width和height属性,具体代码如下:上面的代码中,width属性指定图片的宽度为200px,height属性指定图片的高度为150px,以此来调整图片的大小。…

    2023-01-03 08:33:41
    0 13 36
  • css 背景图片:Unlock the Power of Creative Imagery

    示例示例CSS 背景图片是使用 CSS 属性来设置背景图片的一种方式。它可以帮助我们为网页元素添加背景图片,从而使网页更加美观。代码示例:…

    2023-06-10 13:04:23
    0 50 84
  • 有没有自动打卡签到的小程序:有没有办法用魔杖使用ImageMagick的小插图功能

    关于有没有自动打卡签到的小程序的问题,在wand oops中经常遇到,我一直在寻找一种将 ImageMagick 的vignette functionality与Wand一起使用的方法,但是在 Wand 的文档中找不到该怎么做。…

    2022-12-19 09:16:59
    0 25 88
  • C盘变红了如何清理win7:为什么整个画面都变红了 (images of turning red)

    关于C盘变红了如何清理win7的问题,在images of turning red中经常遇到,我们一直在尝试修复这个程序几个小时,但似乎没有任何工作,我们只是无法弄清楚问题是什么。除了红色像素之外,它应该使整个图片为黑白。(https://imgur.com/a/gxRm3N1之后应该是这样)…

    2022-12-26 07:03:27
    0 85 70
  • Cpu使用率高有什么影响:随机高 CPU使用率(windows image acquisition high cpu)

    关于Cpu使用率高有什么影响的问题,在windows image acquisition high cpu中经常遇到,我注意到 Visual Studio Code 随机地具有非常高的 CPU 使用率。通常,这似乎与我有一个 SQL 服务器项目的窗口有关。下面是code--status当这最近发生时的输出。对这里可能发生的事情有什么见解?…

    2022-12-14 04:08:37
    0 59 59

发表评论

登录 后才能评论

评论列表(73条)