您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 细胞图像处理技术及其在VisualBasic中的应用
细胞图像处理技术及其在VisualBasic6.0中的应用刘欢(学号:51041300069,导师:张红锋)摘要:利用计算机软件对图像进行处理,特别是对一些特定的科学图像作定性和定量的分析,是计算机图像科学以及机器视觉领域的发展趋势。本文介绍了当前比较流行的图像处理技术和实现方法,结合细胞测量、细胞检验和细胞统计等生物学需求,利用VisualBasic6.0作为开发软件,探讨了细胞图像处理软件的开发和利用,并讨论了细胞图像处理技术的发展前景。摘要:细胞图像处理,细胞测量,VisualBasic1.计算机图像处理的现状本世纪20年代,人们第一次通过对图像进行编码,开始进行对自然图像数字化的研究。大型计算机出现以后,人们开始利用计算机来改善图像。从图像增强和复原,到较为复杂的数字图像质量处理,再到机器视觉,经过多年的发展,数字图像处理技术在20多年的时间里迅速地发展成为一门独立的有强大生命力的学科。现今计算机图像处理技术已经越来越多地应用到包括空间技术开发、生物医学、X射线图像增强、光学显微图像分析、遥感图像分析、粒子物理、人工智能和工业检测等方面。细胞图像处理技术是计算机图像处理技术中的一种。其特点是运用计算机编程和数学方法,对细胞图像进行运算和智能化处理,实现对图像中细胞信息的提取、测量和统计。使用计算机处理细胞图像,可以达到对细胞边界的精确定位,实现对细胞面积、灰度、数量等信息的精确和快速检测,从而定性和定量地获取需要的研究数据。现今通常使用一些开发软件,如C++、VB、Perl和Metlab等工具,来实现自定义开发科研中需要的细胞图像处理软件。其中,VisualBasic是一种简单和易懂的开发工具。并具有可视化开发、面向对象等特点。本文将讨论如何在VisualBasic6.0环境中实现对细胞图像处理软件的开发。2.图像信息的数字化2.1图像信息矩阵为了让计算机能够处理图像信息,我们必须首先将照片、图纸等图像信息数字化。设连续图像f(x,y)经过等间隔抽样以后,可以用一个离散量组成的矩阵来表示矩阵中的每一个元素称为象素。f(x,y)代表(x,y)点的灰度值,即亮度值。对于N×N的象素,具有G级灰度级时,则存贮此图像所需的位数为b,它的单位为比特,即b=N×N×m例如,灰度级G=64级(6bit)的128×128图像需要98304个存贮位,图像的清晰度主要取决于N和m,这些参数越大,数字阵列对于原图像的近似就越好,但是存贮量以及由此而引起的计算量也作为N和m的函数而很快地增加。2.2Windows系统位图实际情况下,我们主要在Microsoft公司的Windows系统中进行图像的处理操作。在Windows中我们观测细胞图像的显示屏幕以及打印机等其实都是属于“光栅设备”。在光栅设备中,一幅图象由多条扫描线以及能访问的单独像素构成。从图象的种类来讲,Windows中存在两种位图,一种叫与设备有关位图(或叫设备相关位图),另一种叫与设备无关位(或叫设备无关位图,或DIB)。除非特别声明,Windows中的位图都是与设备有关的位图。在图像处理编程的领域我们常常使用设备无关位图。区别与设备有关位图和与设备无关位图的重要依据是,判断该位图是否具有句柄。具有句柄的位图便是与设备有关的位图,因为它是GDI对象之一。常见的BMP图象则属于与设备无关的位图。一般叫做“BMP图象”或者叫做“DIB”,它是一种数据的组织方式,并非GDI绘图对象。可以把与设备无关位图理解为对与设备有关位图数据的一种标准格式的数据保存方式。这种位图文件会在文件头上放置文件的组织信息,用以描述文件的结构。文件头后面紧跟着的是图象的颜色数据。由于这种机制的存在,使得与设备无关的位图可以在各种设备之间进行读写。在图像处理的编程中,我们通常使用DIB,以获得数据的互通以及实现对图像象素更快的访问。DIB文件的组成分为三大部分,它们分别是:BITMAPFILEHEADER、BITMAPINFO以及文件的数据部分。DIB的文件头主要由两个部分组成,即BITMAPFILEHEADER和BITMAPINFO。而BITMAPINFO又分为BITMAPINFOHEADER和RGBQUAD两个小部分。其中,BITMAPFILEHEADER主要记录了DIB文件大小以及结构有关的信息。BITMAPINFOHEADER结构主要记载了数据区的大小及颜色信息。RGBQUAD结构存贮颜色信息,所描述的颜色值用来产生调色板。由于要读取位图的基本信息,所以首先要定义一个BITMAP结构的变量,然后利用这一变量来接受位图的基本信息。以下代码在VisualBasic环境中定义了一个DIB图像的基本结构:PrivateTypeBITMAPINFOHEADERbiSizeAsLong'结构长度,总共40个字节biWidthAsLong'指定位图的宽度,以像素为单位biHeightAsLong'指定位图的高度,以像素为单位biPlanesAsInteger'指定目标设备的级数(必须为1)biBitCountAsInteger'每一个像素的位(1,4,8,16,24,32)biCompressionAsLong'指定压缩类型biSizeImageAsLong'指定图象的大小,以字节为单位biXPelsPerMeterAsLong'指定设备水平分辨率,以每米的像素为单位biYPelsPerMeterAsLong'指定设备垂直分辨率,以每米的像素为单位biClrUsedAsLong'在颜色表中实际使用的色彩索引的个数biClrImportantAsLong'指定认为重要的颜色索引个数EndTypePrivateTypeBitmapbmTypeAsLong'图片类型bmWidthAsLong'图片宽度bmHeightAsLong'图片高度bmWidthBytesAsLong'多少二进制位构成一个存储单位bmPlanesAsInteger'调色板数bmBitsPixelAsInteger'图片每一个Pixel所占用的二进制位数BmBitsAsLong'图片二进制位数据的起始位置EndTypePrivateTypeRGBQUAD'自定义私有类型BAsByte'兰色,指定彩色中蓝色成分的多少GAsByte'绿色,指定彩色中绿色成分的多少rAsByte'红色,指定彩色中红色成分的多少AAsByte'保留EndType在定义了相应的位图结构后,我们可以将图像信息写入该结构。在这里可以通过使用Windows的一些API函数来实现:Privatem_tBIHAsBITMAPINFOHEADERPrivatem_hDCAsLongPrivatem_hDIBAsLongPrivatem_hOldDIBAsLongPrivatem_lpBitsAsLongPublicFunctionCreate(ByValNewWidthAsLong,ByValNewHeightAsLong,OptionalByValBackColorAsLong=vbBlack)AsBooleanDimtRectAsRECT2DimhBrushAsLong'—准备DIB头部Withm_tBIH.biSize=Len(m_tBIH).biPlanes=1.biBitCount=32.biWidth=NewWidth.biHeight=NewHeight.biSizeImage=(4*NewWidth)*NewHeightEndWith'—建立DIB区域m_hDC=CreateCompatibleDC(0)'创建一个与指定设备一致的内存设备描述表If(m_hDC0)Then'—建立DIB位图m_hDIB=CreateDIBSection(m_hDC,m_tBIH,DIB_RGB_COLORS,m_lpBits,0,0)'创建一个存储DIB位的内存区域If(m_hDIB0)Then'—将对象存入内存中m_hOldDIB=SelectObject(m_hDC,m_hDIB)'把对象选入指定的设备描述表,新的对象代替同一类型的老对象'—设置背景颜色CallSetRect(tRect,0,0,NewWidth,NewHeight)'设置指定矩形的内容hBrush=CreateSolidBrush(BackColor)'用纯色创建一个刷子CallFillRect(m_hDC,tRect,hBrush)'用指定的刷子填充一个矩形CallDeleteObject(hBrush)'删除GDI对象,释放系统资源ElseCallMe.DestroyEndIfEndIf'—创建成功Create=(m_hDIB0)EndFunction在系统中使用DIB的好处是可以快速方便地访问其中的象素。其中,DIB对象的R、G、B三种属性分别代表了图像的红、绿、蓝三原色。如果要将图像转化为灰度图像,可以将R、G、B三种属性分别加权。如以下代码提供了访问图像象素三原色的范例,并使用(R×0.299+G×0.587+B×0.114),将图像转化为灰色。ForY=0ToH‘H为图像高度减1象素ForX=0ToW‘W为图像宽度减1象素WithdBits(X,Y)l=0.114*sBits(X,Y).b+0.587*sBits(X,Y).g+0.299*sBits(X,Y).rIflmylevel1Thenl=255Elsel=0EndIf.b=l.g=l.r=lEndWithNextXNextY3.细胞图像的处理3.1细胞图像边缘处理在处理细胞图像时,必须精确地检测细胞边缘,区分细胞与介质的界限。由于在图像信息中,细胞边缘的象素之间在色彩信息上有较大波动,我们可以通过提高边缘的色彩对比,拉开两者的梯度值,用一定的算子对细胞进行滤波。比较常见的算子是Prewitt算子、Sobel算子等。可以使用3×3或者5×5的方块,让算子在图像上移动,将块居于当前象素的时候,这个块中每个单元的系数乘以底下的象素值,将该数值加在一起,然后除以Divide因子,最后在结果中加入Bias偏差。以下是几种经典的Sobel算子:我们可以通过程序对图像进行滤波处理:ForY=1ToH‘H为图像高度减2象素ForX=1ToW‘W为图像宽度减2象素WithdBits(X,Y)’按上述原理分别处理R、G、B三原色r=(p0*sBits(X-1,Y-1).r+_p1*sBits(X,Y-1).r+_p2*sBits(X+1,Y-1).r+_p3*sBits(X-1,Y).r+_p4*sBits(X,Y).r+_p5*sBits(X+1,Y).r+_p6*sBits(X-1,Y+1).r+_p7*sBits(X,Y+1).r+_p8*sBits(X+1,Y+1).r)_/tDivide_+biasg=(p0*sBits(X-1,Y-1).g+_p1*sBits(X,Y-1).g+_p2*sBits(X+1,Y-1).g+_p3*sBits(X-1,Y).g+_p4*sBits(X,Y).g+_p5*sBits(X+1,Y).g+_p6*sBits(X-1,Y+1).g+_p7*sBits(X,Y+1).g+_p8*sBits(X+1,Y+1).g)_/tDivide_+biasb=(p0*sBits(X-1,Y-1).b+_p1*sBits(X,Y-1).b+_p2*sBits(X+1,Y-1).b+_p3*sBits(X-1,Y).b+_p4*sBits(X,Y).b+_p5*sBits(X+1,Y).b+_p6*sBits(X-1,Y+1).b+_p7*sBits(X,Y+1).b+_p8*sBits(X+1,Y+1).b)_/tDivide_+bias‘越界处理Ifr255Thenr=255Ifr0Thenr=0Ifg255Theng=255Ifg0Theng=0Ifb255Thenb=255Ifb0Thenb=0.r=r.b=b.g=gEndWithNextXEndIfNextY滤波的结果是将细胞的边缘清晰
三七文档所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
本文标题:细胞图像处理技术及其在VisualBasic中的应用
链接地址:https://www.777doc.com/doc-2135077 .html