沈阳理工大学迭代阈值法图像分割程序设计

合集下载

彩色图象分割课程设计—RGB模型

彩色图象分割课程设计—RGB模型

彩色图像的处理有时需要将图像数据在不同的颜色空间中表示,因此,图像的颜色空间之间的转换成为一项有意义的工作,其中RGB在颜色空间转换中其关键作用,是各个空间转换的桥梁。

为了研究基于全参考图像的RGB模型彩色图像分割方法及其质量的客观评价方法,依据RGB模型彩色图像分割后得到的颜色分量具有相关性,对于彩色图像,应用基于传统阈值分割算法分析,主要使用到imread获取图像的RGB颜色信息,函数makecform()和applycform()来实现,将彩色图像转换成灰度图像,进而实现基于RGB模型的彩色图像的分割。

实验结果表明,提出的算法均可用与一定目的的RGB模型彩色图像的分割,由给出一组基于误差的单位像素的分割质量的客观评价的计算公式计算出的数据可用于彩色图像的分割质量的客观评价,且与彩色图像的分割效果的主观质量评价结果是一致的,可用于彩色图像分割质量的评价。

关键字:Matlab;图像处理;RGB1设计目的及要求................................................... I I1.1设计目的 ......................................... 错误!未定义书签。

1.2设计要求 (1)2图像处理简介 (2)2.1图像处理技术 (2)2.2图像处理的内容 (2)3设计原理 (4)4 设计方案 (5)4.1设计思想 (5)4.1 设计流程 (8)5 代码实现 (9)6仿真与结果分析 (11)6.1 仿真结果 (11)6.2 结果分析 (12)结论 (13)参考文献 (14)彩色图象分割课程设计—RGB模型1设计目的及要求1.1 设计目的(1)综合运用相关课程中所学到的理论知识去独立完成设计课题。

(2)通过查阅手册和相关文献资料,培养独立分析和解决问题的能力。

(3)进一步熟悉Matlab运用和图像处理的知识,加深对专业知识和理论知识学习的认识和理解。

数字图像处理实验指导书

数字图像处理实验指导书

《数字图像处理》实验指导书王永堃沈阳理工大学信息学院前言数字图像处理是电子信息科学与技术专业学生必修的专业基础课之一。

通过本课程的学习,使学生能够掌握有关数字图像处理的基本概念、方法、原理及应用,能够培养和增强学生技能的创新意识和创新思维,提高实际动手能力和创新能力,为学生进一步学习专业课程奠定基础。

数字图像处理由理论教学和实验教学环节组成,理论教学环节是基础,实验教学环节是对理论教学环节的延伸、充实和完善,实验教学在数字图像处理课程中具有重要地位与作用。

实验题目和学时说明。

实验一编写一幅灰度图像直方图统计程序;实验二图象编码实验;实验三用Photoshop软件对图像进行增强操作;实验四图象分割实验。

实验五数字图像变换实验六数字图像增强实验七二维数字滤波器设计实验八基于DSP的灰度阈值变换1目录实验一编写一幅灰度图像直方图统计程序 .................................. 4一实验目的......................................................................... 4二实验原理......................................................................... 4三实验内容......................................................................... 4四实验要求......................................................................... 4五实验程序......................................................................... 4六思考题 ............................................................................ 6实验二图象编码实验................................................................. 8一实验目的......................................................................... 8二实验内容......................................................................... 8三实验步骤......................................................................... 81 余弦变换编码.............................................................. 82 行程编码 .................................................................... 93 JPEG编码 ................................................................... 9四思考题 .........................................................................10实验三用Photoshop软件对图像进行增强操作.........................112一实验目的......................................................................11二实验内容......................................................................11三实验步骤......................................................................11四思考题 .........................................................................13实验四图象分割实验..............................................................15一实验目的......................................................................15二实验内容......................................................................15三实验方法......................................................................161边缘检测 ...................................................................162 模板匹配 .................................................................16四思考题 .........................................................................17实验五数字图像变换……………………………………………..1 4 实验六数字图像增强……………………………………………….1 6 实验七二维数字滤波器设计……………………………………….1 7 实验八基于DSP的灰度阈值变换………………………………….1 83实验一编写一幅灰度图像直方图统计程序一实验目的了解数字图像灰度直方图的概念和计算方法,掌握用MATLAB 画数字图像灰度直方图的方法。

自动阈值迭代法及Otsu法实验报告

自动阈值迭代法及Otsu法实验报告

数字图像处理实验自动阈值迭代法及Otsu法姓名:学好:指导老师:王韬时间:2012年5月自动阈值迭代法及Otsu法实验报告一、实验原理大津法由大津于1979年提出,对图像Image,记t为前景与背景的分割阈值,前景点数占图像比例为w0,平均灰度为u0;背景点数占图像比例为w1,平均灰度为u1。

图像的总平均灰度为:u=w0*u0+w1*u1。

从最小灰度值到最大灰度值遍历t,当t使得值g=w0*(u0-u)2+w1*(u1-u)2 最大时t即为分割的最佳阈值。

对大津法可作如下理解:该式实际上就是类间方差值,阈值t分割出的前景和背景两部分构成了整幅图像,而前景取值u0,概率为 w0,背景取值u1,概率为w1,总均值为u,根据方差的定义即得该式。

因方差是灰度分布均匀性的一种度量,方差值越大,说明构成图像的两部分差别越大, 当部分目标错分为背景或部分背景错分为目标都会导致两部分差别变小,因此使类间方差最大的分割意味着错分概率最小。

二、实验步骤自动阈值(迭代法)步骤(1)估计一个阈值T(比如均值)(2)用阈值T将灰度直方图分割成两个区域R1、R2(3)分别计算两个区域R1、R2内的灰度平均值u1和u2(4)选择新阈值T=(u1+u2)/2(5)重复上述工作3~5次,直到前后两次的阈值不变自动阈值(Otsu法)步骤(1).计算直方图(2).设置初值:wi(0)以及ui(0)(3).从1到最大值设置阈值T。

更新wi (t)以及ui (t)。

计算σb(t) * σb(t)。

(4).选取最大σb(t) * σb(t)对应的T三、实验程序#include <afx.h>#include <windows.h>#include <iostream.h>#include <stdlib.h>#include <math.h>int nWidth; //图像宽度int nHeight; //图像高度int nColorBits; //每个像素所占位数int nColor; //图像颜色数int nLen; //图像文件大小,以字节数计int nByteWidth; //图像每行字节数BYTE *lpBitmap; //指向图像首字节的指针BYTE *lpBits; //指向图像实际数据的指针void OpenFile(CString FileName);void SaveFile(CString FileName);void OtusTHreshold(void);/*函数名称OpenFile() 功能:读取一幅BMP图像*/void OpenFile(CString FileName){//创建文件语句HANDLEhFile=::CreateFile(FileName,GENERIC_READ,FILE_SHARE_READ,NULL,OPEN _EXISTING,FILE_ATTRIBUTE_NORMAL,NULL);if(hFile==0){printf("不能打开文件,请重新选择!\n");return;}//读取图像文件DWORD WriteNum;BITMAPFILEHEADER BFH;//文件头ReadFile(hFile,&BFH,14,&WriteNum,NULL);//读取文件头,共14个字节if((BFH.bfType!='MB')||(WriteNum!=sizeof(BITMAPFILEHEADER))){printf("不是BMP位图文件或数据有误!\n");return;}nLen=GetFileSize(hFile,NULL)-sizeof(BITMAPFILEHEADER);//获取文件的长度lpBitmap=new BYTE[nLen];//存放图像,包括图像的信息头、调色板和像素数据ReadFile(hFile,lpBitmap,nLen,&WriteNum,NULL);//读取图像数据//设置全局变量的值BITMAPINFOHEADER *BIH=((BITMAPINFOHEADER *)lpBitmap);//图像文件的信息头nWidth=BIH->biWidth;//图像的宽度nHeight=BIH->biHeight;//图像的高度nColorBits=BIH->biBitCount;//图像的颜色数nByteWidth=(nWidth*nColorBits+31)/32*4;//图像的扫描宽度nColor=(nColorBits>8)?0:(1<<nColorBits);//调色板中的颜色数lpBits=lpBitmap+sizeof(BITMAPINFOHEADER)+sizeof(RGBQUAD)*nColor;//指向图像数据的实际位置CloseHandle(hFile);//关闭文件句柄}/*函数名称SaveFile() 功能:保存一幅BMP图像*/void SaveFile(CString FileName){//创建一个文件来保存图像文件HANDLEhFile=::CreateFile(FileName,GENERIC_WRITE,FILE_SHARE_WRITE,NULL,CR EATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,NULL);if(hFile==0){printf("不能创建文件,请重新选择!\n");return;}//创建一个文件头,并保存到创建的文件中unsigned long WriteNum;BITMAPFILEHEADER BFH;BFH.bfType='MB';BFH.bfSize=nLen+sizeof(BITMAPFILEHEADER);BFH.bfOffBits=sizeof(BITMAPFILEHEADER)+sizeof(BITMAPINFOHEADER)+n Color*sizeof(RGBQUAD);BFH.bfReserved1=BFH.bfReserved2=0;WriteFile(hFile,&BFH,sizeof(BITMAPFILEHEADER),&WriteNum,NULL);//保存改变的位图文件数据WriteFile(hFile,(BITMAPINFOHEADER*)lpBitmap,nLen,&WriteNum,NULL);CloseHandle(hFile);//关闭文件句柄}/*图像分割Otsu法*/void Otus(void){int i,j;//循环变量int nGrayHistogram[256];//灰度直方图数组,并初始化memset(nGrayHistogram,0,sizeof(nGrayHistogram));//统计各个灰度级对应的像素个数,并存放到灰度直方图数组中int nPixel;for(j=0;j<nHeight;j++){for(i=0;i<nWidth;i++){nPixel=lpBits[nByteWidth*j+i];//获取当前像素点的灰度值nGrayHistogram[nPixel]++;//对灰度值统计计数}}float u0,u1;//c0组和c1组的均值float w0,w1;//c0组和c1组的概率int nCount0;//c0组的像素总数int nT,nBestT;//阈值和最佳阈值(对应方差最大时的阈值)float fVaria,fMaxVaria=0;//方差和最大方差//统计直方图中像素点的总数,并存放到nSum中int nSum=0;for(i=0;i<256;i++)nSum+=nGrayHistogram[i];//令阈值nT从0遍历到255for(nT=0;nT<256;nT++){//当阈值为nT时,计算c0组的均值和概率u0=0;nCount0=0;for(i=0;i<=nT;i++){u0+=i*nGrayHistogram[i];nCount0+=nGrayHistogram[i];}u0/=nCount0;w0=(float)nCount0/nSum;//当阈值为nT时,计算c1组的均值和概率u1=0;for(i=nT+1;i<256;i++)u1+=i*nGrayHistogram[i];u1/=(nSum-nCount0);w1=1-w0;fVaria=w0*w1*(u0-u1)*(u0-u1);//计算两组间的方差if(fVaria>fMaxVaria)//记录最大方差和最佳阈值{fMaxVaria=fVaria;nBestT=nT;}}//利用最佳阈值对源图像作分割处理for(j=0;j<nHeight;j++){for(i=0;i<nWidth;i++){if(lpBits[j*nByteWidth+i]<nBestT)lpBits[j*nByteWidth+i]=0;elselpBits[j*nByteWidth+i]=255;}}}void main(){char OpenFileName[200];char SaveFileName[200];cout<<"请输入图像路径"<< endl;gets(OpenFileName);cout<<"请输入保存图像路径"<< endl;gets(SaveFileName);OpenFile(OpenFileName);Otus();cout<<"已完成!"<< endl;SaveFile(SaveFileName);delete []lpBitmap;}四、实验结果原图像:处理后图像:。

数字图像处理课程设计

数字图像处理课程设计

摘要数字图像处理的目的之一是图像识别, 而图像分割是图像识别工作的基础。

图像分割的算法有阈值分割法,边缘检测法,区域分割等,本设计重点介绍了分水岭图像分割的原理,MATLAB的实现代码与运行结果,并进行结果分析。

本程序中很多地方都有输入输出提示,有一定的人机交互。

分水岭阈值分割算法是一种特殊的自适应迭代阈值分割算法。

迭代阈值分割属于相似性分割,分水岭阈值选择算法具有运算简单、性能优良、能够较好的提取对象轮廓、准确的得到物体边缘的优点。

而利用分水岭算法分割时需要梯度信息,原始信号中噪声的影响会在梯度图中造成虚多虚假的局部极小值,因此产生了分割。

分水岭算法是对图像的梯度分割,因此本文利用分水岭算法将原图像通过梯度算子边缘检测得到梯度图像,在通过梯度图像的分水岭变换来进行图像的分割。

本文通过完成计算距离函数、标记内、外约束,完成重构梯度图,最后利用watershe算法完成对图像的分割。

关键词:分水岭;图像分割;标记内外约束;梯度图;MATLAB目录1设计目的 (1)2设计要求 (1)3软硬件平台 (1)3.1MATLAB软件介绍 (1)3.1.1MATLAB简介 (1)3.1.2MATLAB的广泛应用 (2)3.1.3 MATLAB主要组成部分 (3)4图像分割原理 (4)4.1研究背景 (4)4.2图像分割的基本原理 (4)5设计原理 (6)5.1 分水岭算法的概念 (6)5.2分水岭算法计算过程 (6)5.3分水岭算法的实现与特点 (7)6程序设计 (8)6.1程序代码........................................................................ 错误!未定义书签。

6.2 操作流程图 (8)7仿真结果与分析 (10)7.1仿真结果 (10)7.2结果分析 (11)8结论 (12)参考文献 (13)1设计目的(1)了解图像分割的原理(2)理解最大类间方差法的原理,及其应用,了解对图像处理后的变化效果(3)检验和巩固专业知识,提高综合素质和能力。

数字图像处理ostu图像分割和迭代式阈值

数字图像处理ostu图像分割和迭代式阈值

数字图像处理ostu图像分割和迭代式阈值(⼀)⽤各梯度算⼦对图像进⾏边缘检测;实现代码:clc;I=imread('flower.jpg');%读⼊灰度图像I1=im2double(I); %将彩图序列变成双精度f=rgb2gray(I1); %将彩⾊图变成灰⾊图[L,R]=size (f);%图像⼤⼩GR=f;GP=f;GS=f;for x=2:L-1for y=2:R-1GRx(x,y)=f(x,y)-f(x+1,y+1);GRy(x,y)=f(x,y+1)-f(x+1,y);GR(x,y)=sqrt((GRx(x,y)).^2+(GRy(x,y)).^2);%roberts图像边缘提取GPx(x,y)=(f(x-1,y+1)+f(x,y+1)+f(x+1,y+1))/3-(f(x-1,y-1)+f(x,y-1)+f(x+ 1,y-1))/3;GPy(x,y)=(f(x-1,y-1)+f(x-1,y)+f(x-1,y+1))/3-(f(x+1,y-1)+f(x+1,y)+f(x+ 1,y+1))/3;GP(x,y)=sqrt((GPx(x,y)).^2+(GPy(x,y)).^2);%prewitt图像边缘提取GSx(x,y)=(f(x-1,y+1)+2*f(x,y+1)+f(x+1,y+1))/3-(f(x-1,y-1)+2*f(x,y-1)+ f(x+1,y-1))/3;GSy(x,y)=(f(x-1,y-1)+2*f(x-1,y)+f(x-1,y+1))/3-(f(x+1,y-1)+2*f(x+1,y)+ f(x+1,y+1))/3;GS(x,y)=sqrt((GSx(x,y)).^2+(GSy(x,y)).^2);%sobel图像边缘提取endendfigure; %subplot(2,2,1);imshow(f,[]);title('原图象');figure;%subplot(2,2,2);imshow(GR,[]);title('Roberts算⼦边缘提取');figure;%subplot(2,2,3);imshow(GP,[]);title('Prewitt算⼦边缘提取');figure;%subplot(2,2,4);imshow(GS,[]);title('Sobel算⼦边缘提取');(⼆)利⽤直⽅图⼈⼯指定阈值对rice进⾏⾃动单阈值分割;源代码: oldbuf=imread('rice.tif');subplot(2,2,1);imshow(oldbuf);title('原图像');[M,N]=size(oldbuf);sk = imhist(oldbuf);%直⽅图up=max(sk);%纵坐标最⼤值subplot(2,2,2),imhist(oldbuf);axis([1 256 0 up]);%原直⽅图title('原图像直⽅图'),ylabel('频数'); xlabel('灰度值');fori=1:125sk(i)=0;endfori=126:Msk(i)=1;endfori=1:Mfor j=1:Nnewbuf(i,j)=sk(oldbuf(i,j));%映射end;endsubplot(2,2,3);imshow(newbuf); title('单阈值分割'); %单阈值分割I=im2double(oldbuf);se=strel('disk',10);%创建⼀个指定⼤⼩R平⾯disk形状的结构化元素。

多媒体图像处理实验——阈值分割实验报告

多媒体图像处理实验——阈值分割实验报告

图像分割迭代法实现图像阈值分割:一.实验原理图像阈值化分割是一种最常用,同时也是最简单的图像分割方法,它特别适用于目标和背景占据不同灰度级范围的图像。

它不仅可以极大的压缩数据量,而且也大大简化了分析和处理步骤,因此在很多情况下,是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。

图像阈值化的目的是要按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域布局有这种一致属性。

这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。

迭代法是基于逼近的思想,其步骤如下:(1)求出图象的最大灰度值和最小灰度值,分别记为Zmax和Zmin,令初始阈值T0=(Zmax+Zmin)/2;(2)根据阈值TK将图象分割为前景和背景,分别求出两者的平均灰度值ZO和ZB;(3)求出新阈值TK+1=(ZO+ZB)/2;(4)若TK=TK+1,则所得即为阈值;否则转2,迭代计算。

迭代所得的阈值分割的图象效果良好。

基于迭代的阈值能区分出图像的前景和背景的主要区域所在,但在图像的细微处还没有很好的区分度。

经试验比较,对于直方图双峰明显,谷底较深的图像,迭代方法可以较快地获得满意结果。

但是对于直方图双峰不明显,或图像目标和背景比例差异悬殊,迭代法所选取的阈值不如最大类间方差法。

二.实验内容对测试图像进行图像分割,求出分割测试图像的最佳阈值。

分别显示原图、原图的直方图(标出阈值)、和分割后的二值图。

图1——测试图像三.实验程序%分割clear;I=imread('D:\fenge.jpg');figure(1)subplot(121);imshow(I);title('原图');[M,N]=size(I);T=125;%令原图像直方图两峰之间的谷底作为阈值ok=true;while okF1=I>=T;F2=I<T;aveF1=mean(I(F1));aveF2=mean(I(F2));newT=0.5*(aveF1+aveF2);ok=abs(T-newT)>=1;T=newT;endF=255*(I>T)+0*(I<=T);figure(1)subplot(122);imshow(F)title('分割后的二值图像');figure(2)[counts,x]=imhist(I,256);counts=counts/M/N;stem(x,counts,'.');hold on;plot([T,T],[0,0.03],'r');%直方图阈值分界线str=num2str(T);text(T,0.01,'阈值分割线');text(T,0.015,str);title('原图直方图');四.结果分析从图2原图像直方图中可以看出,选择初始阈值时可以选择两峰值之间的谷底作为阈值,经过迭代计算后,可以得出最终阈值。

阈值迭代法

阈值迭代法

阈值迭代法
阈值迭代法是一种计算机算法,常用于图像处理、模式识别等领域。

它的基本思想是根据给定的阈值对图像进行二值化处理,不断调整阈值,直到满足预定的条件为止。

具体来说,阈值迭代法首先选择一个初始阈值,然后将图像中的所有像素根据该阈值进行二值化。

接下来,统计出两个像素类别的均值,即黑色像素的平均灰度值和白色像素的平均灰度值。

如果这两个均值之间的差距小于一个预定的容差值,则认为当前阈值已经满足要求,处理结束。

否则,将阈值调整为两个均值的平均值,继续进行二值化处理。

阈值迭代法的优点是可以自动确定最佳阈值,避免了手动调整的繁琐过程。

同时,它也可以处理复杂图像,比如有噪点、亮度不均等情况下的二值化。

然而,阈值迭代法也有一些缺点。

首先,它对于阈值的初始选择比较敏感,随意选择可能会导致结果不稳定。

其次,由于它只考虑了两种像素类别,因此在处理复杂图像时可能会出现误差。

- 1 -。

迭代阈值法

迭代阈值法

摘要数字图像处理的目的之一是图像识别, 而图像分割是图像识别工作的基础。

图像分割是指把图像分解成具有特性的区域并提取出感兴趣目标的技术和过程,是计算机视觉领域的一个重要而且基本的问题,分割结果的好坏将直接影响到视觉系统的性能。

因此从原理,应用和应用效果的评估上深入研究图像分割技术具有十分重要的意义。

本课题主要介绍了图像分割的基本知识。

图像分割的算法有阈值分割法,边缘检测法,区域分割等,本设计重点介绍了基于最小点阈值方法,基于最优阈值分割方法,基于迭代图像分割方法,最大类间方差法(OTSU)的图像分割法的原理和他们的MATLAB的实现代码与运行结果。

关键词:图像分割; MATLAB;阈值分割;目录1 课程设计目的 (3)2 课程设计要求 (3)3 相关知识 (3)3。

1 图像分割的概述 (3)3.2 阈值分割的基本原理 (4)3。

3 阈值分割方法的分类 (5)3.3.1 基于点的全局阈值方法 (6)3.3。

2 基于区域的全局阈值方法 (6)3.3。

3 局部阈值法和多阈值法 (6)4 程设计分析 (6)4。

1 基于迭代的方法实现图像切割 (6)4.2 最大类间方差的方法实现图像切割 (7)5 程序设计 (8)5。

1 程序简单介绍 (8)5。

2 程序代码 (8)6 结果与分析 (11)结束语 (12)参考文献 (13)迭代阈值法1 课程设计目的本设计的课题任务是掌握图像阈值分割算法研究,实现对图像的分割。

了解图像分割的应用及基本方法,理解阈值化图像分割原理,理解三类典型的阈值化分割算法,并利用之进行图像分割,给出实验结果并做出分析.2 课程设计要求⑴查阅相关资料;⑵理解基于各像素值的阈值分割算法,基于区域性质的阈值分割算法, 基于坐标位置的阈值分割算;软件编程实现利用基于各像素值的阈值分割算法进行图像分割,要求完成如下内容:包括极小值点阈值、最优阈值、迭代阈值,基于最大方差的阈值,基于最大熵的阈值等方法,利用之实现图像分割,这里的图像可以针对核磁共振图像⑶用MATLAB实现,并观察各算法之间的区别。

图像特征检测 沈阳理工大学数字图像处理课程设计

图像特征检测 沈阳理工大学数字图像处理课程设计

摘要图像处理是一门很有价值的学科,在科学技术不断发展的今天它的技术已趋于成熟。

同时图像之间的处理,在实际应用中也显的越来越重要。

本课程设计的主要任务是实现对数字图像的频谱特性的分析,观察结果,并进行结果分析。

本课程设计的系统开发平台为MATLAB,程序运行平台为Windows98/2000/XP在图像理解、图像匹配、三维重建及模式识别等领域中,特征点的检测具有十分重要的意义。

特征点在保留图像中物体的重要特征信息的同时有效地减少了信息的数据量,使得对图像处理时运算量大大减少。

特征点的的定义有多种不同的表述,如图像中灰度值和像素剧烈变化的点、图像边界上具有较高曲率的点等。

对于特征点的定义决定了特征点的特性,同时也决定了所检测出的特征点的检测所采用的方法。

SUSAN(Smallest Univalue Segment Assimilating Nucleus)算法是上世纪九十年代中期提出的一种边角点检测算法,该算法是一种基于图像局部灰度特征,利用一个圆形的模板对图像进行扫描,比较模板内部的点与模板中心点的灰度值,如果灰度差值小于一定的阈值,就认为该点与中心点的灰度相同,否则就认为该点与中心点有明显的差异。

统计模板内部与中心点灰度相同的点的个数,与一个全局阈值进行比较,判断该点是否属于角点,从而实现对图像特征点的检测。

本文采用matlab语言实现了SUSAN特征点监测并利用模拟图像和真实图像对算法进行了验证,实验表明SUSAN特征点检测算法能有效提取图像中的特征点。

与传统的角点检测算法相比,SUSAN算法是一种基于图像灰度比较的算法,不涉及梯度的计算。

具有速度快、抗干扰能力强等特点。

关键字:SUSAN算法;边缘检测;角点检测;matlab目录1课程设计目的 (1)2课程设计要求 (2)3特征点检测的原理及方法 (3)3.1 SUSAN算法基本原理 (3)3.2 SUSAN算法的实现 (6)3.2.1读入图像 (6)3.2.2 SUSAN算法显示边缘图 (6)4.matlab程序代码 (7)5.算法的应用 (12)6.算法的评价 (14)6.1算法的改进 (14)6.2参数对角点的影响 (14)6.2.1去除真角点附近的伪角点 (14)6.2.2边缘轮廓上的伪角点处理 (15)6.3 Harris与SUSAN算法的比较 (15)6.3.1 Harris基本原理 (15)6.3.2实验分析变化 (17)6.4 Harris与SUSAN小结 (18)结论 (19)参考文献 (20)(1)学习并了解Matlab软件的实用,并了解Matlab在数字图像中的应用。

迭代收缩阈值算法代码

迭代收缩阈值算法代码

迭代收缩阈值算法代码迭代收缩阈值算法是一种用于图像分割的算法,它可以将图像中的目标从背景中分离出来。

该算法的基本思想是通过迭代的方式,不断调整阈值,直到达到最佳的分割效果。

在本文中,我们将详细介绍迭代收缩阈值算法的原理和代码实现。

一、算法原理迭代收缩阈值算法基于图像的灰度分布特征,通过不断调整阈值,将图像中的目标和背景分离开来。

算法的主要步骤如下:1.初始化阈值T,一般取图像灰度级的中值。

2.根据阈值T将图像分割为两个区域,分别为目标区域和背景区域。

3.计算目标区域和背景区域的平均灰度值m1和m2。

4.更新阈值T为m1和m2的平均值。

5.重复步骤2-4,直到阈值T不再变化或达到迭代次数的上限。

二、代码实现以下是使用Python语言实现迭代收缩阈值算法的示例代码:```import numpy as npimport cv2def iterative_thresholding(img):# 初始化阈值threshold = np.median(img)# 迭代次数上限max_iter = 100iter_count = 0while True:# 根据阈值分割图像_, binary = cv2.threshold(img, threshold, 255, cv2.THRESH_BINARY)# 计算目标区域和背景区域的平均灰度值mean1 = cv2.mean(img, binary)[0]mean2 = cv2.mean(img, ~binary)[0]# 更新阈值new_threshold = (mean1 + mean2) / 2# 判断阈值是否收敛if abs(new_threshold - threshold) < 1e-5 or iter_count >= max_iter:breakthreshold = new_thresholditer_count += 1return binary# 读取图像img = cv2.imread("image.jpg", 0)# 图像分割result = iterative_thresholding(img)# 显示结果cv2.imshow("Result", result)cv2.waitKey(0)cv2.destroyAllWindows()```以上代码首先引入了`numpy`和`cv2`库,分别用于处理图像和计算平均灰度值。

迭代法阈值分割

迭代法阈值分割

迭代法阈值分割
迭代法阈值分割是一种常用的图像分割方法,它通过不断迭代计算图像的阈值,将图像分为不同的区域,从而实现图像的分割。

该方法的优点是简单易懂,计算速度快,适用于各种类型的图像分割。

迭代法阈值分割的基本原理是将图像的灰度值分为两个区域,然后计算两个区域的平均灰度值,将平均灰度值作为新的阈值,再将图像分为两个区域,如此循环迭代,直到满足一定的条件为止。

具体的步骤如下:
1. 初始化阈值T,将图像分为两个区域,分别为前景区域和背景区域。

2. 计算前景区域和背景区域的平均灰度值,将平均灰度值作为新的阈值T。

3. 将图像根据新的阈值T分为两个区域,分别为前景区域和背景区域。

4. 判断新的阈值T和旧的阈值T'之间的差值是否小于一定的阈值,如果小于则停止迭代,否则继续迭代。

5. 输出分割结果。

迭代法阈值分割的优点是计算速度快,适用于各种类型的图像分割。

但是该方法也存在一些缺点,例如对于复杂的图像,分割效果可能
不理想,需要进行后续的处理。

此外,该方法对于阈值的选择比较敏感,需要根据具体的图像进行调整。

迭代法阈值分割是一种简单易懂、计算速度快的图像分割方法,适用于各种类型的图像分割。

在实际应用中,需要根据具体的图像进行调整,以达到最佳的分割效果。

python迭代式阈值分割

python迭代式阈值分割

python迭代式阈值分割迭代式阈值分割是一种常用的图像处理方法,可以将图像中的目标物体与背景进行有效分割。

本文将介绍使用Python进行迭代式阈值分割的步骤和技巧。

我们需要导入必要的库,如OpenCV和NumPy。

OpenCV是一个强大的计算机视觉库,可以用于图像处理和分析。

NumPy是一个用于数值计算的库,可以方便地处理图像数据。

接下来,我们需要加载待处理的图像。

可以使用OpenCV的imread()函数来读取图像文件,参数为图像文件的路径。

读取后的图像数据将保存在一个NumPy数组中。

然后,我们可以对图像进行灰度化处理。

灰度化可以将彩色图像转换为灰度图像,简化后续处理的复杂度。

可以使用OpenCV的cvtColor()函数来实现灰度化,参数为输入图像和转换类型。

接下来,我们需要选择一个合适的阈值进行分割。

阈值分割是将图像中的像素分为目标和背景的方法,通过设定一个阈值,将大于该阈值的像素设置为目标,小于阈值的像素设置为背景。

阈值的选择对分割效果至关重要,通常需要根据具体图像的特点进行调整。

可以尝试不同的阈值,并观察分割结果的效果。

然后,我们可以使用OpenCV的threshold()函数进行阈值分割。

该函数的参数包括输入图像、阈值、最大像素值和阈值类型。

根据阈值类型的不同,可以选择不同的分割效果,如二值化、反二值化、截断等。

接下来,我们可以使用迭代的方式来调整阈值,以得到更好的分割效果。

迭代式阈值分割的思想是根据当前阈值计算目标和背景的平均灰度值,然后将平均灰度值作为新的阈值,再次进行分割。

这个过程会一直迭代下去,直到阈值不再发生变化为止。

在每次迭代中,我们需要计算新的阈值,并更新分割结果。

可以使用NumPy的mean()函数来计算平均灰度值,然后将其作为新的阈值进行分割。

可以使用OpenCV的compare()函数来比较图像中的像素值和阈值,得到新的分割结果。

我们可以将分割结果保存为图像文件。

阈值法图像分割实验报告

阈值法图像分割实验报告

阈值法图像分割实验报告阈值法图像分割实验报告 1 实验目的图像分割阈值法具有实现容易、计算量小、性能稳定等优点。

因此这种方法成为图像分割领域中应用最普遍的方法。

本文主要讨论了基于直方图法的图像分割的设计与实现,并与迭代法进行了对比实验。

2 实验环境Microsoft VC++6.0软件平台,32位Windows XP操作系统。

3 实验原理基础3.1 直方图法直方图阈值法其阈值主要通过分析图像的灰度直方图来进行确定。

假定一幅图像如图3-1所示,其中背景是灰色,物体为灰白色的,背景中的黑色像素产生了直fxy(,)方图的左锋,而物体的各灰度级产生了直方图的右峰。

由于物体边界像素数相对而言较少,从而产生两峰之间的谷,选择谷对应的灰度值作为阈值T,利用式3.1,可以得到一幅二值图像gxy(,),用于后续处理和分析。

0,(,)fxyT,, (3.1) g(,)xy,,255,(,)fxyT,,背景部分物体部分0255阈值T图3-1 利用直方图选择二值化阈值3.2 迭代法(用于对比试验)迭代法也是一种在图像分割过程中选择合适阈值的方法。

它是基于逼近的思想通过阈值迭代的方式利用程序自动计算出比较合适的分割阈值。

迭代法指在初始条件中假设一个阈值,而通过对图像的迭代运算来不断地更新这一假设阈值来得到最佳阈值。

迭代法阈值分割主要算法:RR,minmax1( 求出图像最小灰度值和最大灰度值计算初始阈值为T,RRminmax022( 根据阈值将图像分割成目标和背景两部分,求出两部分的平均灰度值RijNij(,)(,),RijNij(,)(,),,,RijT(,),RijT(,),kkR,R,0GNij(,)Nij(,),,RijT(,),RijT(,),kk为图像上点的灰度值,为点的权重系数,一般为Rij(,)(,)ijNij(,)(,)ijNij(,)的个数 T 为阈值 Rij(,)RR,0G3. 重新选择阈值,新的阈值定义为 TTT,k,1k,1,k124. 循环做第二步到第四步,当 TT,则结束,即可获得最佳阈值来对图像进行kk,1分割。

二值图像的处理程序设计—形态学处理

二值图像的处理程序设计—形态学处理

数学形态学兴起于20世纪60年代,是一种新型的非线性算子,它着重研究图像的几何结构,由于视觉信息理解都是基于对象几何特性的,因此它更适合视觉信息的处理和分析,这类相互作用由两种基本运算腐蚀和膨胀及它们的组合运算来完成。

数学形态学为在图像识别、显微图像分析、医学图像、工业图像、机器人视觉方面都有十分重要的应用。

本设计运用MATLAB把一幅图像二值化,并进行膨胀、腐蚀、开启、闭合等处理,这些算法分别能够使图像边缘扩大物体中的空洞;边缘缩小消除小且无意义的物体;保持原目标的大小与形态的同时,填充凹陷,弥合孔洞和裂缝;用来消除小物体、在纤细点处分离物体、平滑较大物体的边界的同时并不改变其面积。

关键字:膨胀;腐蚀;开启;闭合1设计目的与要求 (1)1.1设计目的 (1)1.2设计要求 (1)2 MATLAB平台 (2)2.1MATLAB简介 (2)2.2MATLAB的应用 (2)3设计原理 (3)3.1膨胀 (3)3.2腐蚀 (3)3.3开启与闭合 (5)3.4阈值 (5)4设计方案 (6)4.1设计思想 (6)4.2设计流程 (6)5代码实现 (7)6仿真与结果分析 (8)6.1仿真 (6)6.2结果分析 (11)结论 (12)参考文献 (13)二值图像的处理程序设计—形态学处理1设计目的与要求1.1设计目的(1)了解膨胀、腐蚀、开启、闭合四种方法对二值图像的影响,及它们在数字图处理中的应用。

(2)进一步熟悉MATLAB运用和图像处理的知识,加深对图像二值化处理1.2课程设计要求利用所学的数字图像处理技术,自己设计完成对一副灰度图像的形态学运算(膨胀、腐蚀及其组合运算);对一副灰度图像的分块处理运算。

具体要求:(1)熟悉和掌握MATLAB程序设计方法;(2)学习和熟悉MATLAB图像处理工具箱;(3)学会运用MATLAB工具箱对图像进行处理和分析;(4)能对图像jpg格式进行打开、保存、另存、退出等功能操作;(5)利用所学数字图像处理技术知识、MA TLAB软件对图像进行腐蚀,膨胀,开运算,闭运算。

基于Python的图像阈值化分割(迭代法)

基于Python的图像阈值化分割(迭代法)

基于Python的图像阈值化分割(迭代法)1.阈值化分割原理通过对图像的灰度直⽅图进⾏数学统计,选择⼀个或多个阈值将像素划分为若⼲类。

⼀般情况下,当图像由灰度值相差较⼤的⽬标和背景组成时,如果⽬标区域内部像素灰度分布均匀⼀致,背景区域像素在另⼀个灰度级上也分布均匀,这时图像的灰度直⽅图会呈现出双峰特性。

在这种情况下,选取位于这两个峰值中间的⾕底对应的灰度值T作为灰度阈值,将图像中各个像素的灰度值与这个阈值进⾏⽐较,根据⽐较的结果将图像中的像素划分到两个类中。

像素灰度值⼤于阈值T的像素点归为⼀类,其余像素点归为另⼀类。

经阈值化处理后的图像g(x,y)定义为:其中f(x,y)为原图像,T为灰度阈值,g(x,y)为分割后产⽣的⼆值图像。

2.算法流程图3.代码实现from PIL import Imageimport matplotlib.pyplot as pltimport numpy as np#读⼊图⽚并转化为矩阵img = plt.imread('2.jpg')im = np.array(img)# 矩阵⼤⼩l = len(im)w = len(im[0])#求初始阈值zmin = np.min(im)zmax = np.max(im)t0 = int((zmin+zmax)/2)#初始化相关变量初始化t1=0res1=0res2=0s1=0s2=0#迭代法计算最佳阈值while abs(t0-t1)>0:for i in range(0,l-1):for j in range(0,w-1):if im[i,j]<t0:res1=res1+im[i,j]s1=s1+1elif im[i,j]>t0:res2=res2+im[i,j]s2=s2+1avg1=res1/s1avg2=res2/s2res1 = 0res2 = 0s1 = 0s2 = 0t1 = t0 #旧阈值储存在t1中t0=int((avg1+avg2)/2) #计算新阈值#阈值化分割#像素点灰度值⼩于最佳阈值t0⽤0填充,其余⽤255填充im = np.where(im[...,:] < t0, 0, 255)#绘制原图窗⼝plt.figure()plt.imshow(img , cmap='gray')plt.title('original')#绘制原图直⽅图并显⽰最佳阈值plt.figure()plt.hist(img.ravel(),256)plt.title('hist')plt.axvline(t0) #绘制最佳阈值分割线plt.text(25, 6100, "Best Threshold:{}".format(t0), size = 15, alpha = 0.8) #绘制阈值化分割后图像plt.figure()plt.imshow(Image.fromarray(im) , cmap='gray')plt.title('new')#绘制阈值化分割后图像的直⽅图plt.figure()plt.hist(im.ravel(),256)plt.title('hist')plt.show()4.阈值化分割结果原始图像原始图像直⽅图阈值化分割后图像阈值化分割后图像直⽅图到此这篇关于基于Python的图像阈值化分割(迭代法)的⽂章就介绍到这了,更多相关Python 图像阈值化分割内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

数字图像边缘检测算法设计—LOG算子与Canny算子

数字图像边缘检测算法设计—LOG算子与Canny算子

摘要边缘检测是数字图像处理中的一项重要内容。

图像边缘是图像最基本的特征,边缘在图像分析中起着重要的用。

所谓边缘(edge)是指图像局部特征的不连续性。

灰度或结构信息的突变称为边缘,例如:灰度级的突变、颜色的突变、纹理结的突变。

边缘是一个区域的结束,也是另一个区域的开始,利用该征可以分割图像。

图像边缘检测和分析可定义为应用一系列方法获取、校正、增强、变换、检测或压缩可视图像的技术。

其目的是提高信息的相对质量,以便提取有用信息。

本次课设对图像边缘检测常用的两种算法LOG算子和Canny 算子进行了分析和比较,并用MATLAB实现这两个算法。

最后通过实例图像对不同边缘检测算法的效果进行分析,比较了不同算法的特点和适用范围。

关键词:图像处理;边缘检测;MATLAB目录1 课程设计目的和要求 (1)1.1 设计目的 (1)1.2 设计要求 (1)2 边缘检测简介 (2)2.1 边缘检测的定义 (2)2.2 图像边缘检测算法的研究内容 (3)3 边缘检测算子 (5)3.1 Canny算子 (5)3.1.1 Canny边缘检测基本原理 (5)3.1.2 Canny边缘检测算法 (5)3.2 Log算子 (7)4 仿真程序 (9)4.1 Log算子 (9)4.2 Canny算子 (9)4.3Canny算子和log算子的比较 (10)5 结果分析 (11)结束语 (13)参考文献 (14)1 课程设计目的与要求1.1设计目的数字图像出技术的迅猛发展,使其应用前景的得到了不可限量的扩展。

如今各行各业都在积极发展与图像相关的技术,数字图像处理逐渐凸显出其魅力。

其应用如医学影像,航天航空,无人驾驶,自动导航,工业控制,导弹制导,文化艺术等。

边缘检测技术在图像处理和计算机视觉等领域起着重要的作用,是图像分析,模式识别,目标检测与分割等的前期处理。

前期边缘检测的好坏,直接影响后期更高级处理的精度。

在实际图像边缘检测问题中,图像的边缘作为图像的一种基本特征,经常被应用到较高层次的图像应用中去。

阈值迭代法

阈值迭代法

阈值迭代法
阈值迭代法是一种计算机图像处理中常用的二值化方法。

该方法通过设置一个阈值,在图像中将像素值大于该阈值的像素点二值化为白色,将像素值小于等于该阈值的像素点二值化为黑色。

这个阈值的选择对图像的二值化效果有很大的影响,因此通常需要通过迭代的方式来动态寻找最优的阈值。

阈值迭代法的基本思路是:首先随机选取一个阈值,将图像进行二值化,然后计算得到此时的前景像素和背景像素的平均值,将平均值作为新的阈值,继续进行二值化,重复这个过程,直到新的阈值和旧的阈值的差值小于一个预设的阈值。

这种方法可以有效地将图像进行二值化,使得前景和背景的分割更加准确。

阈值迭代法的优点是简单易用,对于不同的图像也可以通过调节参数来达到较好的效果。

但是,该方法也存在一些缺点,例如无法很好地处理光线不均匀的图像、无法处理阈值过大或过小的情况等。

因此,在实际应用中,需要根据具体的情况灵活选择不同的二值化方法。

- 1 -。

6.3数字图像处理——迭代法阈值分割及Python实现

6.3数字图像处理——迭代法阈值分割及Python实现

6.3数字图像处理——迭代法阈值分割及Python实现本节介绍数字图像处理中的迭代法阈值分割,针对灰度图进⾏⾃动寻找阈值。

收敛证明⽬前未找到相关资料。

1. 迭代法阈值分割步骤(1) 选取初始分割阈值,通常可选图像灰度平均值T。

(2) 根据阈值T将图像像素分割为背景和前景,分别求出两者的平均灰度T_0和T_1。

(3) 计算新的阈值T' = \frac{T_0 + T_1}{2}。

(4) 若T == T',则迭代结束,T即为最终阈值。

否则令T = T',转第 (2) 步。

2. 效果3. Python实现import cv2 as cvimport numpy as npimport matplotlib.pyplot as pltdef show(img):if img.ndim == 2:plt.imshow(img, cmap='gray', vmin=0, vmax=255)else:img = cv.cvtColor(img, cv.COLOR_BGR2RGB)plt.imshow(img)plt.show()img = cv.imread('pic/eagle500x500.jpg', 0)T = img.mean()while True:t0 = img[img < T].mean()t1 = img[img >= T].mean()t = (t0 + t1) / 2if abs(T - t) < 1:breakT = tT = int(T)print(f"Best threshold = {T}")th, img_bin = cv.threshold(img, T, 255, 0)show(img_bin)说明:1. 未经许可,谢绝转载。

2. 本教程为《数字图像处理Python OpenCV实战》的配套代码相关内容。

图像的阈值分割法设计

图像的阈值分割法设计
图 1 植 物 细 胞 和 流 感 细 胞 的 灰 度 图
由单阈值分割图像程序可得到植物细胞图像的迭 代法所得的阈值 T=153 ,最 大 类 间 方 差 法 所 得 阈 值 t* =86;流感细胞图像的迭代法所得阈值 T=86,最大 类 间 方 差 法 所 得 阈 值 t* =86。 对 这 两 种 方 法 在 MATLAB 中进行仿真,得 到 分 割 后 的 图 像 清 晰,细 胞 及 细 胞 外 部 结 构 都 能 明 显 呈 现 ,但 是 最 大 类 间 方 差 法
参考文献: [1] 章毓晋.图像处理和分析[M].北京:清华大学出版社,2001. [2] 刘直 芳,王 运 琼,朱 敏.数 字 图 像 处 理 与 分 析 [M].北 京:
清 华 大 学 出 版 社 ,2006. [3] 刘平,图像 分 割 阈 值 选 取 技 术 综 述 [J].计 算 机 工 程 与 应
0 引 言
图像分割被定义 为 这 样 的 一 个 过 程,即 按 照 一 定
的规则,把一幅图像 分 成 些 许 个 互 相 没 有 联 系 的 小 区
域,且在这个过程 中 产 生 图 像 的 基 元。 这 里 的 小 区 域
是指在一定情境下具有相同属性的像素的连通集合,
而 连 通 是 一 种 连 接 的 路 径 ,就 是 在 集 合 中 随 意 的 两 个 点
图 3 植 物 细 胞 和 流 感 细 胞 的 最 大 类 间 方 差 法 阈 值 分 割 图
4 结 论 与 展 望 本文在阈值分割部分,针对最大类间方差法进行了
详细的讨论,并对两种方法分割后的图像进行了讨论比 较。由实验可知,背景和目标之间的类间方差对图像效 果影响很大 ,二 者 的 类 间 方 差 越 大 ,构 成 图 像 的 两 部 分 的差别就越大。除此之外,人们还提出了一系列的图像 分割方法 ,如一 维 最 大 熵 图 像 分 割 、二 维 最 大 熵 图 像 分 割、基于小波变换的图像分割、模糊聚类、共生 矩阵 等。 这 些 方 法 应 用 于 不 同 的 领 域 ,有 他 们 各 自 的 优 点 。 相 信 随着人们探索 的 不 断 深 入 ,将 会 有 更 多 、更 好 的 方 法 涌 现出来,为科学研究以及人们的日常生活提供便利。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

成绩评定表课程设计任务书摘要数字图像处理的目的之一是图像识别,而图像分割是图像识别工作的基础。

图像分割是从图像预处理到图像识别和分析、理解的关键步骤,在数字图像处理中占据重要的位置。

图像分割的目的是将图像分成一些有意义的区域并对这些区域进行描述。

图像分割的方法主要有点相关分割、区域相关分割、阈值法、界限检测法、匹配法、跟踪法等。

本设计主要采用阈值分割法中的迭代阈值法,利用MATLAB 软件中的图像处理函数将图像导入,然后对图像进行灰度变换,通过迭代法求图像最佳分割阈值,根据该阈值对图像进行分割,从而产生二值化后的图像。

仿真结果表明,通过迭代法选取的阈值是比较准确的,可以采用此阈值对图像进行分割。

关键词:图像分割;迭代阈值法;MATLAB目录1设计目的与要求 (1)1.1设计目的 (1)1.2设计要求 (1)2设计原理 (1)2.1图像分割 (1)2.2基于阈值的分割 (2)2.3迭代阈值法 (2)3设计方案 (3)3.1设计思想 (3)3.2设计流程 (3)4软件实现 (4)5仿真与结果分析 (5)5.1仿真 (5)5.2结果分析 (7)结论 (8)参考文献 (9)基于最大类间方差法图像分割程序设计—迭代阈值法1设计目的与要求1.1设计目的(1)利用MATLAB软件编写程序实现图像分割。

(2)查阅相关资料并整理分析,掌握迭代阈值法的主要原理。

(3)利用迭代阈值法选择最优阈值,并对图像进行二值化。

1.2设计要求(1)熟练掌握MATLAB软件的基本操作。

(2)了解MATLAB软件的程序编程。

(3)对所学知识仔细梳理,掌握迭代阈值法的主要思路。

(4)培养独立分析和解决问题的能力,学会撰写课程设计的总结报告。

(5)善于总结和改进方案,提高方案可实施性和高效性。

2设计原理2.1图像分割图像分割是从图像预处理到图像识别和分析、理解的关键步骤,图像分割和分割的目标表达、特征提取和参数测量等将原始图像转化为数学表达形式,使得利用计算机进行图像分析和理解成为可能,在图像处理中占据重要的位置。

图像分割的目的是将图像分成一些有意义的区域, 然后对这些区域进行描述, 相当于提取出某些目标区域图像的特征, 判断图像中是否有感兴趣的目标。

图像分割的依据建立在图像上像素间的“相似性”和“不连续性”两个基本概念之上【1】。

所谓“相似性”是指在某个区域内像素具有某种相似的特性, 如灰度、纹理相同;所谓“不连续性”是指特性不连续, 如灰度值发生突变。

从总体上来说, 图像分割就是把图像分成若干个有意义区域的处理技术【2】。

这些区域互不交叠, 每一个区域内部的某种特性或特征相同或接近, 而不同区域间的图像特征则有明显差别。

2.2基于阈值的分割阈值分割法是一种基于图像的分割技术。

其基本原理是通过设定不同的特征阈值,把图像像素分为若干类。

常用的特征包括直接来自原始图像的灰度或彩色特征、由原始图像或彩色值变换得到的特征【3】。

它主要是利用图像中要提取的目标物体和背景在灰度上的差异, 选择一个合适的阈值, 通过判断图像中的每一个像素点的特征属性是否满足阈值的要求来确定图像中该像素点属于目标区还是应该属于背景区域, 从而产生二值图像【4】。

它计算简单, 而且总能用封闭而且连通的边界定义不交叠的区域。

2.3迭代阈值法迭代法是采用基于逼近的思想,利用程序自动搜寻出比较合适的阈值。

假设有一幅图像),(y x f ,),(j i Z 是图像上),(j i 点的灰度值,),(j i N 是),(j i 点的权重系数,),(j i N 取),(j i 点灰度的概率【5】。

迭代算法步骤如下:步骤1:求出图像中的最小和最大灰度值min Z 和m ax Z 的阈值初值。

)(21min max 0Z Z T += (2.1)步骤2:根据阈值k T 将图像分割成目标和背景两部分,求出两部分的平均灰度值0Z 和B Z 。

∑∑<<⨯=T j i z T j i z j i N j i N j i z Z k ),(),(0),(),(),( (2.2)∑∑<>⨯=T j i z T j i z B j i N j i N j i z Z k ),(),(),(),(),( (2.3)步骤3:求出新阈值1+k T 。

201B k Z Z T +=+ (2.4)步骤4:若k T =1+k T ,则结束;否则,1+=k k ,转到步骤2。

步骤5:第4步结束后,k T 为最佳阈值。

3设计方案3.1设计思想在使用阈值法进行分割技术时, 阈值的选取成为能否正确分割的关键。

给定一幅图像,仅凭人眼主观上的感觉是很难找到合适的阈值点的,但利用阈值分割算法可以对图像进行准确、有效的分割。

迭代法是目前应用比较多的阈值选取方法【6】。

迭代阈值选取方法首先选取图像的灰度范围的中值作为初始值,把图像中的全部像素分成前景、背景两大类,然后分别对其进行积分并将结果取平均以获取一新的阈值,并按此阈值将图像分成前景、背景。

如此反复迭代下去,当阈值不再变化,即迭代已经收敛于某个稳定的阈值时,此刻的阈值即作为最终的结果并用于对图像的分割【7】。

3.2设计流程在进行具体的程序设计时,由于阈值的迭代运算是以图像的灰度统计作为基础的,因此需首先获取图像的灰度统计分布情况。

该情况执行完后将存放有灰度分布的数组作为参数传递给迭代阈值函数,并通过迭代的方式计算出最终阈值。

函数的后半部分利用此阈值进行图像分割,并最终显示分割结果。

迭代阈值法进行图像分割流程如图3.1所示。

图3.1迭代法进行图像分割流程图4软件实现图像处理工具箱是MATLAB环境下开发的许多工具箱之一,它以数字图像处理理论为基础,用MATLAB语言构造出一系列用于图像数据显示与处理的M 函数【8】。

应用迭代阈值法进行图像分割时用到的主要函数如下:(1)使用imread()函数读入图像,并用rgb2gray()函数转换成灰度图像,其核心代码如下:A=imread('filename.jpg');B=rgb2gray(A);(2)对阈值进行初始化,初始值设置为false,其核心代码如下:T=0.5*(double(min(B(:)))+double(max(B(:))));d=false;(3)编写程序通过迭代求最佳阈值,并显示在MATLAB主窗口,其核心代码如下:while~dg=B>=T;Tn=0.5*(mean(B(g))+mean(B(~g)));d=abs(T-Tn)<0.5;T=Tn;enddisp(strcat('迭代后的最佳阈值为:',num2str(T)));(4)使用im2bw()函数【9】设定阈值将灰度图像转换为二值图像,其核心代码如下:level=Tn/255;BW=im2bw(B,level);(5)使用subplot()函数生成与控制多个坐标轴,把当前图形窗口分隔成几个矩形部分。

第一部分用于显示原始图像;第二部分用于显示灰度图像;第三部分用于显示二值图像。

同时使用imshow函数【10】显示图像分割结果。

其核心代码如下:subplot(131),imshow(A);title('原始图像');subplot(132),imshow(B);title('灰度图像');subplot(133),imshow(BW);title('迭代阈值法分割图像');5仿真与结果分析5.1仿真(1)将程序文件名保存为main.m,MATLAB主窗口运行结果见图5.1所示。

图5.1迭代后的阈值结果由图5.1可知,经过迭代后选取的最佳阈值是119.4468。

(2)将输入的如图5.2所示的原始百合花图像使用rgb2gray( )灰度转换函数通过灰度转换后,得到如图5.3所示的灰度图像,然后经过迭代法选择最佳阈值,再使用im2bw( )函数对图像进行二值化,得到了如图5.4所示的二值化后的图像。

图5.2输入的原始图像图5.3灰度图像图5.4迭代阈值分割图像结果图由图5.3可知,将输入的如图5.1所示的带有鲜明色彩的百合花图像经过灰度变换后,图像中只有黑、白、灰三种颜色。

由图5.4可知,迭代阈值分割后的图像中只有黑、白两种色彩,其中明亮的花瓣部分就是目标区域,灰暗的部分就是背景区域。

二值化后的图像更加明显地反映出图像中场景之间的联系。

5.2结果分析基于仿真的结果分析如下:(1)迭代法是基于逼近的思想,迭代运算是将每次基于阈值获得的两部分灰度值的均值之差是否小于预先设定的极限,若不小于,则继续迭代;否则迭代停止,输出最佳阈值。

(2)将输入的原始图像通过灰度转换,得到灰度图像后,经过迭代选取最佳阈值,用此阈值分割图像得到二值化图像。

也就是将原图像分为了前景和背景,并用两种黑白颜色显现出来,其中亮的部分就是前景,暗的部分就是背景,用这种迭代阈值分割图像可以将图像中感兴趣的部分提取出来。

结论图像分割是由图像处理转到图像分析的关键。

基于灰度的阈值分割法具有计算简单、实现容易的特点,对目标和背景对比度反差较大的图像进行分割比较有效。

本文所设计的迭代阈值法进行图像分割程序设计所取得的成果如下:(1)图像分割(二值化)就是设定一个阈值T,用T经图像的数据分成两大部分:大于T的像素群和小于T的像素群。

将图像上的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白效果的视觉效果;(2)迭代法进行阈值选取就是先将输入的原始图像使用rgb2gray函数将转换成灰度图像,并从中选取一个最大的灰度值和一个最小的灰度值,进行取中值处理,并将此阈值设置为初值。

用此阈值把图像中的全部像素分成前景、背景两大类,然后分别对两部分取平均以获取一新的阈值,并按此阈值将图像分成前景、背景。

如此反复迭代下去,当新的阈值与原来的阈值之差的绝对值小于预先设定的一个极限,此时的阈值即为最佳阈值目前,本设计所采用的迭代阈值分割方法仍存在一些不足。

如对于直方图双峰不明显,或图像目标和背景比列差异悬殊,迭代法所选取的阈值并不理想,此时可以使用灰度直方图法进行阈值选取。

阈值分割法中阈值的确定主要依赖灰度直方图,而很少考虑图像中像素的空间位置关系,因此当背景复杂,容易丧失边界信息,此时可用基于区域的分割方法进行阈值选取。

参考文献[1] 刘刚. MATLAB数字图像处理[M].北京:机械工业出版社.2010:34-45.[2] 王家文.MATLAB 6.5 图形图像处理[M].上海:国防工业出版社.2009:6-14.[3] 王晓丹.MATLAB系统分析[M].西安:西安电子科技大学出版2000:168-220.[4] 余成波. MATLAB实现[M].重庆:重庆大学出社.2003:34-54.[5] 郝文化.MATLAB图像处理[M].河北:中国水利水电出版社. 2004:66-78.[6] 苏金明. MATLAB图形图像[M].四川:成都电子工业出版社. 2005:87-90.[7] 杨志刚等.现代通信原理[M].清华大学出版社,2008: 66-89.[8] 哲学.精通MATLAB[M].电子工业出版社,2008: 2-8.[9] 李圣勤. MATLAB7.0实用教程[M].机器工业出版社,2006: 90-118.[10] 高飞.MATLAB图像处理375例[M].人民邮电出版社,2015:113-141.。

相关文档
最新文档