#大创学习笔记#part1宫颈癌细胞图像分割——直方图最亮谷底阈值确定法提取细胞前景

尝试着做一个工程日记,也想把自己从项目中所学到的知识经验记录下来。而且网上的资源繁多复杂,方法也是各式各样,难免让人眼花缭乱,整理以下思路,供大家参考。
在研究很多篇文献后,我选用了一篇硕士论文中的研究思路,来进行实现。
这篇文献中提到,要对宫颈癌细胞图像进行分割,首先要提取细胞前景图像,从细胞前景中用标记分水岭算法提取细胞核,根据一个区域内细胞核的个数判断其是否是重叠细胞,如果不是,算法结束;如果是重叠的细胞,再分离重叠细胞的细胞质,直到分割结果是单个细胞为止,
提取细胞前景图像的步骤如下:
#大创学习笔记#part1宫颈癌细胞图像分割——直方图最亮谷底阈值确定法提取细胞前景_第1张图片

***step 1***灰度处理

灰度化顾名思义,就是将彩色的图像转化成灰度图像的过程。而对图像进行灰度化有如下几种方法:

  • 分量法:
    将彩色图像中的三分量的亮度作为三个灰度图像的灰度值,可根据应用需要选取一种灰度图像。
    f1(i,j)=R(i,j) f2(i,j)=G(i,j) f3(i,j)=B(i,j)
    其中fk(i,j)(k=1,2,3)为转换后的灰度图像在(i,j)处的灰度值。
  • 最大值法
    将彩色图像中的三分量亮度的最大值作为灰度图的灰度值。
  • 平均值法
    将彩色图像中的三分量亮度求平均得到一个灰度值。
  • 加权平均法
    根据重要性及其它指标,将三个分量以不同的权值进行加权平均。由于人眼对绿色的敏感最高,对蓝色敏感最低,因此,按下式对RGB三分量进行加权平均能得到较合理的灰度图像。
    f(i,j)=0.30R(i,j)+0.59G(i,j)+0.11B(i,j)
    MATLAB中的rgb2gray函数可以实现灰度化处理的功能,采用的是加权平均法。
    在此引用图像灰度化的三种常见方法源码
  function f=MyGrayProcessing(Img)

    [m,n,a]=size(Img);
%     Img1_Gray=zeros(m,n);
%     Img2_Gray=zeros(m,n);
    Img3_Gray=zeros(m,n);
%   Img4_Gray=zeros(m,n);
    for x=1:m
        for y=1:n
%             Img1_Gray(x,y)=(Img(x,y,1)+Img(x,y,2)+Img(x,y,3))/3;%平均值法
%             Img2_Gray(x,y)=max(Img(x,y,1),max(Img(x,y,2),Img(x,y,3)));  %最大值法 
            Img3_Gray(x,y)=0.3*Img(x,y,1)+0.59*Img(x,y,2)+0.11*Img(x,y,3);%加权平均值法
%           Img4.1_Gray(x,y)=Img(x,y,1) %分量法,R通道
%           Img4.2_Gray(x,y)=Img(x,y,2) %分量法,G通道
%           Img4.3_Gray(x,y)=Img(x,y,3) %分量法,B通道
        end
    end
%     figure,imshow(Img);title('原图像')
%     figure,imshow(uint8(Img1_Gray));title('平均值法灰度化图像')
%     figure,imshow(uint8(Img2_Gray));title('最大值法灰度化图像') 
%  figure,imshow(uint8(Img4.1_Gray));title('分量法R通道灰度化图像') 
%   figure,imshow(uint8(Img4.2_Gray));title('分量法G通道灰度化图像') 
%   figure,imshow(uint8(Img4.3_Gray));title('分量法B通道灰度化图像') 
   f=uint8(Img3_Gray);
   figure,imshow(f);title('加权平均值法灰度化图像')

***step 2***计算直方图

图像直方图由于其计算代价较小,且具有图像平移、旋转、缩放不变性等众多优点,广泛地应用于图像处理的各个领域,特别是灰度图像的阈值分割、基于颜色的图像检索以及图像分类。
用MATLAB的自带函数就能直接实现。

x=imread('1.3.bmp');
y=rgb2gray(x);
hist_image=imhist(y);
figure(4)
plot(hist_image),xlim([0,256]),title('MATLAB自带函数')

#大创学习笔记#part1宫颈癌细胞图像分割——直方图最亮谷底阈值确定法提取细胞前景_第2张图片

*** step 3 ***高斯平滑直方图

因为细胞灰度直方图是呈锯齿状的,存在很多极小值点和毛刺噪声,这些锯齿极小值点成为我们找谷底的干扰。因此,需要采用高斯模板对直方图像做卷积操作进行平滑。
MATLAB中的fspecial函数能够实现高斯滤波,具体用法如下:

H = fspecial(‘gaussian’,hsize,sigma) ; 
当type = ‘gaussian’时就是高斯滤波器了,size指定滤波器的大小,默认值是3×3,sigma指定滤波器的标准差,默认值是0.5。

具体代码如下:

x=imread('5.2.bmp');
y=rgb2gray(x);%灰度处理
h= fspecial('gaussian',3*3,0.5);
filteredRGB=imfilter(y,h);
z=imhist(filteredRGB);%直方图
figure(1)
plot(z),xlim([0,256]),title('MATLAB自带函数')%直方图显示

结果显示确实能消除毛刺。
#大创学习笔记#part1宫颈癌细胞图像分割——直方图最亮谷底阈值确定法提取细胞前景_第3张图片

*** step 4 *** 归一化直方图

一般情况下,会对直方图进行归一化处理,使其值在[0,1.0]区间内,方便后续处理。

x=imread('5.2.bmp');
y=rgb2gray(x);%灰度处理
h= fspecial('gaussian',3*3,0.5);
filteredRGB=imfilter(y,h);
[cnts,x1]=imhist(filteredRGB,32);%直方图
[m,n]=size(x);
prob=cnts/m/n;
plot(x1,prob),xlim([0,256]),title('MATLAB自带函数')%归一化直方图显示

结果显示:
#大创学习笔记#part1宫颈癌细胞图像分割——直方图最亮谷底阈值确定法提取细胞前景_第4张图片
今天的项目就到这里吧,感觉虽然看起来很简单,背后的运算却是极其复杂的,还是得小心谨慎。
大创好难,想cry。

你可能感兴趣的:(#大创学习笔记#part1宫颈癌细胞图像分割——直方图最亮谷底阈值确定法提取细胞前景)