细胞图像处理大作业

更新时间:2024-04-03 12:39:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验课程:数字图像处理实验名称:实验地点:计算机中心学生姓名:学 号:指导教师:实验时间:

实验报告

骨髓细胞计数 405

年 月

一、实验要求:

将被染成紫色的白细胞从较暗的红细胞和背景中分割出来,去除细胞粘连,用数字图像处理技术实现图像中紫色细胞的自动计数。 二、实验过程

1、对原图像进行预处理

(1)由于源图像是彩色图像,为了便于进行仿真实验,在进行处理之前需要将彩色图像转换为灰度图像。用到的函数为rgb2gray

(2)获取图像的全局阈值并将图像二值化,以方便后面实验中对图像进行形态学修饰的进行

(3)在图像获取过程中,由于热传输等影响,会产生高斯噪声,较适合采用中值滤波的方法进

行去噪处理。因为,中值滤波的方法能够较好的保护细胞的边缘信息,满足本实验的需求;

(4)删除小面积图像

(5)对图像进行开闭运算。开和闭这两种运算可以除去比结构元素小的特定图像细节,同时保证不产生全局几何失真。开运算可以把比结构元素小的突刺滤掉,切断细长搭接而起到分离作用;闭运算可以把比结构元素小的缺口或孔填充上,搭接短的间隔而起到连接作用。 (6)对图像进行孔洞填充, (7)开闭运算会留下一些偏离的孤立像素,使用bwareaopen来移除少于特定像素个数的斑点。BW2= bwareaopen(BW,P)从二值图像中移除所以少于P像素值的连通块,得到另外的二值图像BW3。 实验图片显示如下:

1

2、分割计数

本次实验采用分水岭法对进行过预处理的图像进行分割和计数,最后计数得紫色细胞个数为35

三、实验心得体会

通过这学期的学习,我获益匪浅,学到了很多有趣的知识,知道了什么是灰度图,二值化,阈值,分水岭等很多有趣的图像处理方法,知道了怎么使用matlab帮助查找自己不会的函数,也成功的自己独立完成了细胞的计数。这门课也激起了我对图像处理的兴趣,课程结束后也会继续学习更多的函数知识,不会停止这方面的学习。

2

四、源代码

Image = imread('b1.bmp'); subplot(321); imshow(Image); title('原图'); Image=rgb2gray(Image); subplot(322); imshow(Image); title('灰度图');

Theshold = graythresh(Image); BW = im2bw(Image,1.3*Theshold);

subplot(323),imshow(BW); title('二值化图像'); BW1= medfilt2(BW,[13 13]); BW1=bwareaopen(BW,50,4) subplot(3,2,4); imshow(BW1);

title('删除小面积后图像'); se=strel('disk',5); fo=imopen(BW1,se); foc=imclose(fo,se) subplot(3,2,5); imshow(foc);

title('开闭运算后图像'); BW2=imfill(foc,'holes'); subplot(3,2,6); imshow(BW2);

title('孔洞填充后图像'); BW3=bwareaopen(BW2,20); D=bwdist(~BW3); D=-D;

D(~BW3)=-Inf; L=watershed(D);

rgb=label2rgb(L,'jet');

3

figure; imshow(rgb,[]);

title('分水岭分割计算后图像'); number=max(max(L))-1; number

4

方法一源程序:

A=imread('y1.bmp'); B=rgb2gray(A);

h=[0 1 0,1 -4 1,0 1 0];

J1=conv2(B,h,'same'); K1=medfilt2(J1,[3 3]);¨ BW=edge(K1,'canny');

SE= strel('line',11,90); BW1=imdilate(BW,SE);

BW2=bwmorph(BW1,'thin',Inf);

[H, theta, rho] = hough(BW2, 'ThetaResolution', 0.2);

subplot(221),imshow(H, [], 'XData', theta, 'YData', rho, 'InitialMagnification', 'fit')

axis on, axis normal

xlabel('\\theta'), ylabel('\\rho') , peaks = houghpeaks(H, 5); hold on

plot(theta(peaks(:, 2)), rho(peaks(:, 1)), ... 'linestyle', 'none', 'marker', 's', 'color', 'w'); lines = houghlines(BW2, theta, rho, peaks); subplot(222),imshow(BW2), hold on for k = 1:length(lines)

5

xy = [lines(k).point1 ; lines(k).point2];

plot(xy(:,1), xy(:,2), 'LineWidth', 4, 'Color', [.8 .8 .8]); end

6

本文来源:https://www.bwwdw.com/article/rz2r.html

Top