C/C++实现显微镜玻片球状细胞识别与计数
显微镜玻片球状细胞识别与计数
灰度化
在RGB彩色空间中,衣服彩色数字图像中各个像素的信息由RGB三原色信息构成,其中R(红)、G(绿)、B(蓝)是由不同的灰度级来描述的,三者共同决定了像素的亮度和色彩。很多时候一副彩色图像无法直接进行处理,需先将彩色图像转换为灰度图像处理。灰度图像是指每个像素的信息由一个量化的灰度级来描述的图像,只有亮度信息,没有颜色信息。
G r a y = R ∗ 0.299 + G ∗ 0.587 + B ∗ 0.114 Gray\ = \ R*0.299\ + \ G*0.587\ + \ B*0.114 Gray = R∗0.299 + G∗0.587 + B∗0.114
图一 灰度图像
二值化
二值图像只有黑、白两种颜色,图像的每个像素只能是黑或者白,没有中间的过渡。其中,二值图像的像素值只能为0和1,分别代表黑色和白色,图像中的每个像素值用1位即可存储。通过判断灰度值大于或小于灰度阈值,将像素灰度值转为0或1。
图二 二值图像
中值滤波
滤波的概念来源于频域对信号进行处理,将某个频率分量滤除的意思。空间域滤波直接基于空间域,采用掩膜处理方法(模板也常被称为滤波器、滤波模板、核、模板或窗口)对图像进行滤波,以去除图像噪声或增强图像的细节。
中值滤波也是基于空间域操作的,用一个 m ∗ n m*n m∗n滤波器的中心点滑过一副图像的机理,基于设计滤波器包围的领域内像素的中间值代替当前像素点的灰度值。
图三 中值滤波
图四 中值滤波效果
霍夫圆变换
霍夫变换在1959年被发明,1962年PaulHough获得了美国专利,专利的有效期通常为20年,自申请日起计算至今早已超过20年的保护期限,该技术已进入公共领域,任何人都可以自由使用。
霍夫圆变换的原理是将在笛卡尔坐标系当中的圆方程转换到圆心 ( a , b ) (a,b) (a,b)和半径 r r r表示的三维坐标系中的一个点对应笛卡尔坐标系的一个圆。
( x − a ) 2 + ( y − b ) 2 = r 2 {(x - a)}^{2} + {(y - b)}^{2} = r^{2} (x−a)2+(y−b)2=r2
x = a + r c o s ( θ ) x = a + rcos(\theta) x=a+rcos(θ)
y = b + r s i n ( θ ) y = b + rsin(\theta) y=b+rsin(θ)
即
a = x − r c o s ( θ ) a = x - rcos(\theta) a=x−rcos(θ)
b = y − r s i n ( θ ) b = y - rsin(\theta) b=y−rsin(θ)
那么,圆上的所有点一定相交于一个点。假设半径 r r r已知,那么可以将三维坐标系换到对应半径 r r r的 a b ab ab平面。
如图五所示圆对应的方程式:
1 = ( x − 2 ) 2 + ( y − 2 ) 2 1 = {(x - 2)}^{2} + {(y - 2)}^{2} 1=(x−2)2+(y−2)2
图五 笛卡尔坐标系圆上3点
取图五中圆上三点 A ( 2 , 3 ) , B ( 1 + 2 − 2 2 , 1 + 2 − 2 2 ) , C ( 2 + 2 − 2 2 , 1 + 2 − 2 2 ) A(2,3),B\left( 1 + \frac{2 - \sqrt{2}}{2},1 + \frac{2 - \sqrt{2}}{2} \right),C\left( 2 + \frac{2 - \sqrt{2}}{2},1 + \frac{2 - \sqrt{2}}{2} \right) A(2,3),B(1+22−2,1+22−2),C(2+22−2,1+22−2),按照上述公式在 a b ab ab平面绘制对应的图形。由图六可知,对应的三个圆之间有一个交点,此交点就是图五当中对应的圆在 a b r abr abr坐标系当中的表达。此外,霍夫变换还能用于更常见的图像中直线的识别,以及椭圆等图形的识别。
图六 笛卡尔坐标系圆上3点对应的
a
b
ab
ab平面圆交点
图七 霍夫圆变换
细胞计数
经过霍夫圆变换识别出图像当中可能是圆形的图形后,可以额外的统计圆形当中的二值像素0(黑色)的个数是否大于总像素个数的80%,来判断是否是真实的"圆细胞"。最终统计所有圆的个数,并将经过叠加圆边缘高亮的数据和OSD拷贝到另一张图片当中,效果如图八所示,图中共64个较完整的细胞。
图八 OSD叠加细胞数量