导航:首页 > 源码编译 > 阈值自适应的累加算法

阈值自适应的累加算法

发布时间:2022-08-09 03:23:30

1. cvfitline用的什么算法

1、cvLoadImage:将图像文件加载至内存;
2、cvNamedWindow:在屏幕上创建一个窗口;
3、cvShowImage:在一个已创建好的窗口中显示图像;
4、cvWaitKey:使程序暂停,等待用户触发一个按键操作;
5、cvReleaseImage:释放图像文件所分配的内存;
6、cvDestroyWindow:销毁显示图像文件的窗口;
7、cvCreateFileCapture:通过参数设置确定要读入的AVI文件;
8、cvQueryFrame:用来将下一帧文件载入内存;
9、cvReleaseCapture:释放CvCapture结构开辟的内存空间;
10、cvCreateTrackbar:创建一个滚动条;
11、cvSetCaptureProperty:设置CvCapture对象的各种属性;
12、cvGetCaptureProperty:查询CvCapture对象的各种属性;
13、cvGetSize:当前图像结构的大小;
14、cvSmooth:对图像进行平滑处理;
15、cvPyrDown:图像金字塔,降采样,图像缩小为原来四分之一;
16、cvCanny:Canny边缘检测;
17、cvCreateCameraCapture:从摄像设备中读入数据;
18、cvCreateVideoWriter:创建一个写入设备以便逐帧将流写入文件;
19、cvWriteFrame:逐帧将流写入文件;
20、cvReleaseVideoWriter:释放CvVideoWriter结构开辟的内存空间;
21、CV_MAT_ELEM:从矩阵中得到一个元素;
22、cvAbs:计算数组中所有元素的绝对值;
23、cvAbsDiff:计算两个数组差值的绝对值;
24、cvAbsDiffS:计算数组和标量差值的绝对值;
25、cvAdd:两个数组的元素级的加运算;
26、cvAddS:一个数组和一个标量的元素级的相加运算;
27、cvAddWeighted:两个数组的元素级的加权相加运算(alpha运算);
28、cvAvg:计算数组中所有元素的平均值;
29、cvAvgSdv:计算数组中所有元素的绝对值和标准差;
30、cvCalcCovarMatrix:计算一组n维空间向量的协方差;
31、cvCmp:对两个数组中的所有元素运用设置的比较操作;
32、cvCmpS:对数组和标量运用设置的比较操作;
33、cvConvertScale:用可选的缩放值转换数组元素类型;
34、cvCopy:把数组中的值复制到另一个数组中;
35、cvCountNonZero:计算数组中非0值的个数;
36、cvCrossProct:计算两个三维向量的向量积(叉积);
37、cvCvtColor:将数组的通道从一个颜色空间转换另外一个颜色空间;
38、cvDet:计算方阵的行列式;
39、cvDiv:用另外一个数组对一个数组进行元素级的除法运算;
40、cvDotProct:计算两个向量的点积;
41、cvEigenVV:计算方阵的特征值和特征向量;
42、cvFlip:围绕选定轴翻转;
43、cvGEMM:矩阵乘法;
44、cvGetCol:从一个数组的列中复制元素;
45、cvGetCols:从数据的相邻的多列中复制元素;
46、cvGetDiag:复制数组中对角线上的所有元素;
47、cvGetDims:返回数组的维数;
48、cvGetDimSize:返回一个数组的所有维的大小;
49、cvGetRow:从一个数组的行中复制元素值;
50、cvGetRows:从一个数组的多个相邻的行中复制元素值;
51、cvGetSize:得到二维的数组的尺寸,以CvSize返回;
52、cvGetSubRect:从一个数组的子区域复制元素值;
53、cvInRange:检查一个数组的元素是否在另外两个数组中的值的范围内;
54、cvInRangeS:检查一个数组的元素的值是否在另外两个标量的范围内;
55、cvInvert:求矩阵的逆;
56、cvMahalonobis:计算两个向量间的马氏距离;
57、cvMax:在两个数组中进行元素级的取最大值操作;
58、cvMaxS:在一个数组和一个标量中进行元素级的取最大值操作;
59、cvMerge:把几个单通道图像合并为一个多通道图像;
60、cvMin:在两个数组中进行元素级的取最小值操作;
61、cvMinS:在一个数组和一个标量中进行元素级的取最小值操作;
62、cvMinMaxLoc:寻找数组中的最大最小值;
63、cvMul:计算两个数组的元素级的乘积(点乘);
64、cvNot:按位对数组中的每一个元素求反;
65、cvNormalize:将数组中元素进行归一化;
66、cvOr:对两个数组进行按位或操作;
67、cvOrs:在数组与标量之间进行按位或操作;
68、cvRece:通过给定的操作符将二维数组简为向量;
69、cvRepeat:以平铺的方式进行数组复制;
70、cvSet:用给定值初始化数组;
71、cvSetZero:将数组中所有元素初始化为0;
72、cvSetIdentity:将数组中对角线上的元素设为1,其他置0;
73、cvSolve:求出线性方程组的解;
74、cvSplit:将多通道数组分割成多个单通道数组;
75、cvSub:两个数组元素级的相减;
76、cvSubS:元素级的从数组中减去标量;
77、cvSubRS:元素级的从标量中减去数组;
78、cvSum:对数组中的所有元素求和;
79、cvSVD:二维矩阵的奇异值分解;
80、cvSVBkSb:奇异值回代计算;
81、cvTrace:计算矩阵迹;
82、cvTranspose:矩阵的转置运算;
83、cvXor:对两个数组进行按位异或操作;
84、cvXorS:在数组和标量之间进行按位异或操作;
85、cvZero:将所有数组中的元素置为0;
86、cvConvertScaleAbs:计算可选的缩放值的绝对值之后再转换数组元素的类型;
87、cvNorm:计算数组的绝对范数, 绝对差分范数或者相对差分范数;
88、cvAnd:对两个数组进行按位与操作;
89、cvAndS:在数组和标量之间进行按位与操作;
90、cvScale:是cvConvertScale的一个宏,可以用来重新调整数组的内容,并且可以将参数从一种数
据类型转换为另一种;
91、cvT:是函数cvTranspose的缩写;
92、cvLine:画直线;
93、cvRectangle:画矩形;
94、cvCircle:画圆;
95、cvEllipse:画椭圆;
96、cvEllipseBox:使用外接矩形描述椭圆;
97、cvFillPoly、cvFillConvexPoly、cvPolyLine:画多边形;
98、cvPutText:在图像上输出一些文本;
99、cvInitFont:采用一组参数配置一些用于屏幕输出的基本个特定字体;
100、cvSave:矩阵保存;
101、cvLoad:矩阵读取;
102、cvOpenFileStorage:为读/写打开存储文件;
103、cvReleaseFileStorage:释放存储的数据;
104、cvStartWriteStruct:开始写入新的数据结构;
105、cvEndWriteStruct:结束写入数据结构;
106、cvWriteInt:写入整数型;
107、cvWriteReal:写入浮点型;
108、cvWriteString:写入字符型;
109、cvWriteComment:写一个XML或YAML的注释字串;
110、cvWrite:写一个对象;
111、cvWriteRawData:写入多个数值;
112、cvWriteFileNode:将文件节点写入另一个文件存储器;
113、cvGetRootFileNode:获取存储器最顶层的节点;
114、cvGetFileNodeByName:在映图或存储器中找到相应节点;
115、cvGetHashedKey:为名称返回一个惟一的指针;
116、cvGetFileNode:在映图或文件存储器中找到节点;
117、cvGetFileNodeName:返回文件的节点名;
118、cvReadInt:读取一个无名称的整数型;
119、cvReadIntByName:读取一个有名称的整数型;
120、cvReadReal:读取一个无名称的浮点型;
121、cvReadRealByName:读取一个有名称的浮点型;
122、cvReadString:从文件节点中寻找字符串;
123、cvReadStringByName:找到一个有名称的文件节点并返回它;
124、cvRead:将对象解码并返回它的指针;
125、cvReadByName:找到对象并解码;
126、cvReadRawData:读取多个数值;
127、cvStartReadRawData:初始化文件节点序列的读取;
128、cvReadRawDataSlice:读取文件节点的内容;
129、cvGetMoleInfo:检查IPP库是否已经正常安装并且检验运行是否正常;
130、cvResizeWindow:用来调整窗口的大小;
131、cvSaveImage:保存图像;
132、cvMoveWindow:将窗口移动到其左上角为x,y的位置;
133、cvDestroyAllWindow:用来关闭所有窗口并释放窗口相关的内存空间;
134、cvGetTrackbarPos:读取滑动条的值;
135、cvSetTrackbarPos:设置滑动条的值;
136、cvGrabFrame:用于快速将帧读入内存;
137、cvRetrieveFrame:对读入帧做所有必须的处理;
138、cvConvertImage:用于在常用的不同图像格式之间转换;
139、cvErode:形态腐蚀;
140、cvDilate:形态学膨胀;
141、cvMorphologyEx:更通用的形态学函数;
142、cvFloodFill:漫水填充算法,用来进一步控制哪些区域将被填充颜色;
143、cvResize:放大或缩小图像;
144、cvPyrUp:图像金字塔,将现有的图像在每个维度上都放大两倍;
145、cvPyrSegmentation:利用金字塔实现图像分割;
146、cvThreshold:图像阈值化;
147、cvAcc:可以将8位整数类型图像累加为浮点图像;
148、cvAdaptiveThreshold:图像自适应阈值;
149、cvFilter2D:图像卷积;
150、cvCopyMakeBorder:将特定的图像轻微变大,然后以各种方式自动填充图像边界;
151、cvSobel:图像边缘检测,Sobel算子;
152、cvLaplace:拉普拉斯变换、图像边缘检测;
153、cvHoughLines2:霍夫直线变换;
154、cvHoughCircles:霍夫圆变换;
155、cvRemap:图像重映射,校正标定图像,图像插值;
156、cvWarpAffine:稠密仿射变换;
157、cvGetQuadrangleSubPix:仿射变换;
158、cvGetAffineTransform:仿射映射矩阵的计算;
159、cvCloneImage:将整个IplImage结构复制到新的IplImage中;
160、cv2DRotationMatrix:仿射映射矩阵的计算;
161、cvTransform:稀疏仿射变换;
162、cvWarpPerspective:密集透视变换(单应性);
163、cvGetPerspectiveTransform:计算透视映射矩阵;
164、cvPerspectiveTransform:稀疏透视变换;
165、cvCartToPolar:将数值从笛卡尔空间到极坐标(极性空间)进行映射;
166、cvPolarToCart:将数值从极性空间到笛卡尔空间进行映射;
167、cvLogPolar:对数极坐标变换;
168、cvDFT:离散傅里叶变换;
169、cvMulSpectrums:频谱乘法;
170、cvDCT:离散余弦变换;
171、cvIntegral:计算积分图像;
172、cvDistTransform:图像的距离变换;
173、cvEqualizeHist:直方图均衡化;
174、cvCreateHist:创建一新直方图;
175、cvMakeHistHeaderForArray:根据已给出的数据创建直方图;
176、cvNormalizeHist:归一化直方图;
177、cvThreshHist:直方图阈值函数;
178、cvCalcHist:从图像中自动计算直方图;
179、cvCompareHist:用于对比两个直方图的相似度;
180、cvCalcEMD2:陆地移动距离(EMD)算法;
181、cvCalcBackProject:反向投影;
182、cvCalcBackProjectPatch:图块的方向投影;
183、cvMatchTemplate:模板匹配;
184、cvCreateMemStorage:用于创建一个内存存储器;
185、cvCreateSeq:创建序列;
186、cvSeqInvert:将序列进行逆序操作;
187、cvCvtSeqToArray:复制序列的全部或部分到一个连续内存数组中;
188、cvFindContours:从二值图像中寻找轮廓;
189、cvDrawContours:绘制轮廓;
190、cvApproxPoly:使用多边形逼近一个轮廓;
191、cvContourPerimeter:轮廓长度;
192、cvContoursMoments:计算轮廓矩;
193、cvMoments:计算Hu不变矩;
194、cvMatchShapes:使用矩进行匹配;
195、cvInitLineIterator:对任意直线上的像素进行采样;
196、cvSampleLine:对直线采样;
197、cvAbsDiff:帧差;
198、cvWatershed:分水岭算法;
199、cvInpaint:修补图像;
200、cvGoodFeaturesToTrack:寻找角点;
201、cvFindCornerSubPix:用于发现亚像素精度的角点位置;
202、cvCalcOpticalFlowLK:实现非金字塔的Lucas-Kanade稠密光流算法;
203、cvMeanShift:mean-shift跟踪算法;
204、cvCamShift:camshift跟踪算法;
205、cvCreateKalman:创建Kalman滤波器;
206、cvCreateConDensation:创建condensation滤波器;
207、cvConvertPointsHomogenious:对齐次坐标进行转换;
208、cvFindChessboardCorners:定位棋盘角点;
209、cvFindHomography:计算单应性矩阵;
210、cvRodrigues2:罗德里格斯变换;
211、cvFitLine:直线拟合算法;
212、cvCalcCovarMatrix:计算协方差矩阵;
213、cvInvert:计算协方差矩阵的逆矩阵;
214、cvMahalanobis:计算Mahalanobis距离;
215、cvKMeans2:K均值;
216、cvCloneMat:根据一个已有的矩阵创建一个新矩阵;
217、cvPreCornerDetect:计算用于角点检测的特征图;
218、cvGetImage:CvMat图像数据格式转换成IplImage图像数据格式;
219、cvMatMul:两矩阵相乘;

2. 什么是自适应阈值去噪

自适应阈值是一种基于无限逼近某一值的思想,一般是用作图像的处理上,得到的结果大多数是其平均值,得到的效果较为良好。。。去噪无非就是用阈值迭代的方法去除干扰。。。自适应阈值可能会因为一个小的误差导致一个巨大的错误,使用时要注意

3. 自适应阈值小波图像去噪怎么编写自适应阈值函数

主要是三类 1)基于点的全局阈值方法; 2)基于区域的全局阈值方法 3)局部阈值方法和多阈值方法 1)基于点的全局阈值方法 p-分位数法 1962年Doyle提出的p-分位数法是最古老的一种阈值选取方法 迭代方法选取阈值 初始...

4. 动态阈值一般有什么算法谢谢啦,没钱。。。

%本程序是利用最大类间方差算法求解自适应阈值,对图像进行分割
clear;
warning off;

web -browser
SE = strel('diamond',4);
BW1 = imread('img1.bmp');
BW2 = imerode(BW1,SE);
BW3 = imdilate(BW2,SE);
BW4 = BW1-BW3;

%rgb转灰度
if isrgb(BW4)==1
I_gray=rgb2gray(BW4);
else
I_gray=BW4;
end
figure,imshow(I_gray);
I_double=double(I_gray);%转化为双精度
[wid,len]=size(I_gray);
colorlevel=256; %灰度级
hist=zeros(colorlevel,1);%直方图
%threshold=128; %初始阈值

%计算直方图
for i=1:wid
for j=1:len
m=I_gray(i,j)+1;
hist(m)=hist(m)+1;
end
end
hist=hist/(wid*len);%直方图归一化
miuT=0;
for m=1:colorlevel
miuT=miuT+(m-1)*hist(m);
end
xigmaB2=0;

for mindex=1:colorlevel
threshold=mindex-1;
omega1=0;
omega2=0;
for m=1:threshold-1
omega1=omega1+hist(m);
end
omega2=1-omega1;
miu1=0;
miu2=0;

for m=1:colorlevel
if m<threshold
miu1=miu1+(m-1)*hist(m);
else
miu2=miu2+(m-1)*hist(m);
end
end
miu1=miu1/omega1;
miu2=miu2/omega2;
xigmaB21=omega1*(miu1-miuT)^2+omega2*(miu2-miuT)^2;
xigma(mindex)=xigmaB21;
if xigmaB21>xigmaB2
finalT=threshold;
xigmaB2=xigmaB21;
end
end
fT=finalT/255 %阈值归一化
T=graythresh(I_gray)%matlab函数求阈值
for i=1:wid
for j=1:len
if I_double(i,j)>finalT
bin(i,j)=1;
else
bin(i,j)=0;
end
end
end
figure,imshow(bin);
figure,plot(1:colorlevel,xigma);
已发送,请查收,发送邮箱396601903@qq.com ,你的邮箱名是错的,弹回来了。反正这里也有,不发了。

5. 求解阈值分割T的阈值算法或者方法是什么

这个有好多种
迭代,峰谷,半峰谷,最小误差,最大熵,等等,在了解这个前你要了解位图概念,了解阈值分割的基本理论,可以q我:676229549

6. 自适应阈值阈值图像分割算法中,自适应阈值怎么设定

根据灰度、梯度、形态等来设定自适应阈值。
设定过程:设置→参数→选择(灰度、梯度、形态)→输入数值→计算阈值→搞定。

阈值又叫临界值,是指一个效应能够产生的最低值或最高值。
阈值又称阈强度,是指释放一个行为反应所需要的最小刺激强度。低于阈值的刺激不能导致行为释放。在反射活动中,阈值的大小是固定不变的,在复杂行为中,阈值则受各种环境条件和动物生理状况的影响。当一种行为更难于释放时,就是阈值提高了;当一种行为更容易释放时,就是阈值下降了。一般说来,刚刚完成某一行为后,动物对这一行为的要求就会大大下降。例如刚交过尾的动物,对于性刺激或是没有反应或是反应很弱,这就意味着释放性行为的阈值增加了。类似情况在觅食行为和其他行为中也很常见。另一方面,长时间未发生的行为非常容易被释放,释放这种行为的刺激强度会变得非常小。在极端情况下,阈值的降低可以导致行为的自发产生,这就是空放行为(vacuum behavior)。空放行为是一种无刺激行为释放,是达不到该种行为目的的一种行为。最令人信服的实例是织巢鸟的筑巢行为。饲养在鸟笼中的织巢鸟,在得不到任何筑巢材料和代用物的情况下,也完全可以表现出筑巢动作,虽然这种动作达不到它本来的目的。
阈值又叫临界值,是指一个效应能够产生的最低值或最高值。

7. opencv中的自适应阈值函数adaptivethreshold中划分的块大小在计算局部阈值的时候

你是做什么用的?
用一个像素是没有办法计算自适应阈值的。
计算自适应阈值:先求出每个像素的强度值,再利用自适应算法在需要设定阈值的区域计算出自适应阈值。
计算每个像素的阈值?这个问法本身就有问题!!
文献中从来没有出现过这种叫法!能这么问的人估计也没怎么看过文献。
显然是计算子区域的阈值。

8. 在遥感中阈值是什么意思

图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提.阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术.已被应用于很多的领域。本文是在阅读大量国内外相关文献的基础上,对阈值分割技术稍做总结,分三个大类综述阈值选取方法,然后对阈值化算法的评估做简要介绍。
关键词
图像分割 阈值选取 全局阈值 局部阈值 直方图 二值化

1.引言
所谓图像分割是指根据灰度、彩色、空间纹理、几何形状等特征把图像划分成若干个互不相交的区域,使得这些特征在同一区域内,表现出一致性或相似性,而在不同区域间表现出明显的不同[37].简单的讲,就是在一幅图像中,把目标从背景中分离出来,以便于进一步处理。图像分割是图像处理与计算机视觉领域低层次视觉中最为基础和重要的领域之一,它是对图像进行视觉分析和模式识别的基本前提.同时它也是一个经典难题,到目前为止既不存在一种通用的图像分割方法,也不存在一种判断是否分割成功的客观标准。
阈值法是一种传统的图像分割方法,因其实现简单、计算量小、性能较稳定而成为图像分割中最基本和应用最广泛的分割技术.已被应用于很多的领域,例如,在红外技术应用中,红外无损检测中红外热图像的分割,红外成像跟踪系统中目标的分割;在遥感应用中,合成孔径雷达图像中目标的分割等;在医学应用中,血液细胞图像的分割,磁共振图像的分割;在农业工程应用中,水果品质无损检测过程中水果图像与背景的分割。在工业生产中,机器视觉运用于产品质量检测等等。在这些应用中,分割是对图像进一步分析、识别的前提,分割的准确性将直接影响后续任务的有效性,其中阈值的选取是图像阈值分割方法中的关键技术。

2.阈值分割的基本概念
图像阈值化分割是一种最常用,同时也是最简单的图像分割方法,它特别适用于目标和背景占据不同灰度级范围的图像[1]。它不仅可以极大的压缩数据量,而且也大大简化了分析和处理步骤,因此在很多情况下,是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。图像阈值化的目的是要按照灰度级,对像素集合进行一个划分,得到的每个子集形成一个与现实景物相对应的区域,各个区域内部具有一致的属性,而相邻区域布局有这种一致属性。这样的划分可以通过从灰度级出发选取一个或多个阈值来实现。
阈值分割法是一种基于区域的图像分割技术,其基本原理是:通过设定不同的特征阈值,把图像像素点分为若干类.常用的特征包括:直接来自原始图像的灰度或彩色特征;由原始灰度或彩色值变换得到的特征.设原始图像为f(x,y),按照一定的准则在f(x,y)中找到特征值T,将图像分割为两个部分,分割后的图像为

若取 :b0=0(黑),b1=1(白),即为我们通常所说的图像二值化。

(原始图像) (阈值分割后的二值化图像)

一般意义下,阈值运算可以看作是对图像中某点的灰度、该点的某种局部特性以及该点在图像中的位置的一种函数,这种阈值函数可记作
T(x,y,N(x,y),f(x,y))
式中,f(x,y)是点(x,y)的灰度值;N(x,y)是点(x,y)的局部邻域特性.根据对T的不同约束,可以得到3种不同类型的阈值[37],即
点相关的全局阈值T=T(f(x,y))
(只与点的灰度值有关)
区域相关的全局阈值T=T(N(x,y),f(x,y))
(与点的灰度值和该点的局部邻域特征有关)
局部阈值或动态阈值T=T(x,y,N(x,y),f(x,y))
(与点的位置、该点的灰度值和该点邻域特征有关)

图像阈值化这个看似简单的问题,在过去的四十年里受到国内外学者的广泛关注,产生了数以百计的阈值选取方法[2-9],但是遗憾的是,如同其他图像分割算法一样,没有一个现有方法对各种各样的图像都能得到令人满意的结果,甚至也没有一个理论指导我们选择特定方法处理特定图像。
所有这些阈值化方法,根据使用的是图像的局部信息还是整体信息,可以分为上下文无关(non-contextual)方法(也叫做基于点(point-dependent)的方法)和上下文相关(contextual)方法(也叫做基于区域(region-dependent)的方法);根据对全图使用统一阈值还是对不同区域使用不同阈值,可以分为全局阈值方法(global thresholding)和局部阈值方法(local thresholding,也叫做自适应阈值方法adaptive thresholding);另外,还可以分为双阈值方法(bilever thresholding)和多阈值方法(multithresholding)
本文分三大类对阈值选取技术进行综述:
1) 基于点的全局阈值方法;
2) 基于区域的全局阈值方法
3) 局部阈值方法和多阈值方法

3.基于点的全局阈值选取方法
3.1 p-分位数法
1962年Doyle[10]提出的p-分位数法(也称p-tile法)可以说是最古老的一种阈值选取方法。该方法使目标或背景的像素比例等于其先验概率来设定阈值,简单高效,但是对于先验概率难于估计的图像却无能为力。
例如,根据先验知识,知道图像目标与背景象素的比例为PO/PB,则可根据此条件直接在图像直方图上找到合适的阈值T,使得f(x,y)>=T的象素为目标,f(x,y)<T的象素为背景。

3.2 迭代方法选取阈值[11]
初始阈值选取为图像的平均灰度T0,然后用T0将图像的象素点分作两部分,计算两部分各自的平均灰度,小于T0的部分为TA,大于T0的部分为TB
计算 ,将T1 作为新的全局阈值代替T0,重复以上过程,如此迭代,直至TK 收敛,即TK+1 =TK
经试验比较,对于直方图双峰明显,谷底较深的图像,迭代方法可以较快地获得满意结果。但是对于直方图双峰不明显,或图像目标和背景比例差异悬殊,迭代法所选取的阈值不如最大类间方差法。

3.3 直方图凹面分析法
从直观上说,图像直方图双峰之间的谷底,应该是比较合理的图像分割阈值,但是实际的直方图是离散的,往往十分粗糙、参差不齐,特别是当有噪声干扰时,有可能形成多个谷底。从而难以用既定的算法,实现对不同类型图像直方图谷底的搜索。
Rosenfeld和Torre[12]提出可以构造一个包含直方图 的最小凸多边形 ,由集差 确定 的凹面。若 和 分别表示 与 在灰度级之处的高度,则 取局部极大值时所对应的灰度级可以作为阈值。也有人使用低通滤波的方法平滑直方图,但是滤波尺度的选择并不容易[13]。
但此方法仍然容易受到噪声干扰,对不同类型的图像,表现出不同的分割效果。往往容易得到假的谷底。但此方法对某些只有单峰直方图的图像,也可以作出分割。如:

3.4 最大类间方差法
由Otsu[14]于1978年提出的最大类间方差法以其计算简单、稳定有效,一直广为使用。从模式识别的角度看,最佳阈值应当产生最佳的目标类与北京类的分离性能,此性能我们用类别方差来表征,为此引入类内方差 、类间方差 和总体方差 ,并定义三个等效的准则测量:
, , . (3)
鉴于计算量的考量,人们一般通过优化第三个准则获取阈值。此方法也有其缺陷,kittler和Illingworth[15]的实验揭示:当图像中目标与背景的大小之比很小时方法失效。
在实际运用中,往往使用以下简化计算公式:
(T) = WA(μa-μ)2 + Wb(μb-μ)2
其中, 为两类间最大方差,WA 为A类概率,μa为A类平均灰度,Wb 为B类概率,μb为B类平均灰度,μ为图像总体平均灰度。
即阈值T将图像分成A,B两部分,使得两类总方差 (T)取最大值的T,即为最佳分割阈值。

3.5 熵方法
八十年代以来,许多学者将Shannon信息熵的概念应用于图像阈值化,其基本思想都是利用图像的灰度分布密度函数定义图像的信息熵,根据假设的不同或视角的不同提出不同的熵准则,最后通过优化该准则得到阈值。Pun[16]通过使后验熵的上限最大来确定阈值。Kapur等人[17]的方法假定目标和背景服从两个不同的概率分布 和 定义
(4)
使得熵
(5)
达到最大求得最佳阈值。
此方法又称为KSW熵方法。

3.6 最小误差阈值
此方法来源于Bayes最小误差分类方法。

Eb(T)是目标类错分到背景类的概率,Eo(T)是背景类错分到目标类的概率
总的误差概率 E(T) = Eb(T) + Eo(T)
使E(T)取最小值,即为最优分类方法。

在Kittler和Illingworth[18]于1986年提出的最小误差法中,直方图被视为目标与背景混合集概率密度函数 的估计
(9)
其中, 为先验概率, ,求解下列方程可得到Bayes最小误差阈值
(10)
遗憾的是上式中 , 和 通常是未知的,Nakagawa和Rosenfeld[19]提倡用拟合方法从直方图中估计这些参数,但是算法相当复杂,不易实现。

3.7 矩量保持法
矩量保持(moment-preserving)法[20] ,即矩守恒阈值法,是1985年提出的,其基本思想是最佳的阈值应该使分割前后图像的矩量保持不变,由此可以得到一组矩量保持方程,求解该方程组就可以得到最佳阈值。

3.8 模糊集方法
模糊集理论较好的描述了人类视觉中的模糊性和随机性,因此在图像阈值化领域受到了广泛的关注。模糊集阈值化方法的基本思想是,选择一种S状的隶属度函数定义模糊集,隶属度为0.5的灰度级对应了阈值,当然在上述隶属度函数的表达式中阈值是一个未知的参数;然后在此模糊集上定义某种准则函数(例如整个图像的总体模糊度),通过优化准则函数来确定最佳阈值。
Pal等[21]首先,他们把一幅具有 个灰度级的 图像看作一个模糊集 ,其中隶属函数 定义如下:
(11)
参数 称之为交叉点(即 )。由此从图像 的空间 平面得到模糊特性 平面。然后,基于此模糊集定义了图像的线性模糊度 、二次模糊度 和模糊熵 ,使这三个量取最小值时的交叉点 即为最佳阈值。
文献[21]指出模糊隶属度函数在该算法中的作用仅在于将图像由灰度数据空间转换为模糊空间 ,其函数的形式对增强结果几乎没有影响。这就使我们有理由使用一些形式简单的函数形式。例如国内学者发表的一种模糊阈值方法[22]:

隶属度μ(x)表示灰度x具有明亮特性的程度,c为隶属函数窗宽,q对应隶属度为0.5的灰度级。设灰度级 的模糊率为:
= min{μ(l),1-μ(l)}
则得到整幅图像的模糊率[44]

其中,MN为图像尺寸,L为图像总灰度级, 图像中灰度为 的象素个数。
对应于不同的q值,就可以计算出相应的图像模糊率,选取使得 最小的q值,作为图像分割的最佳阈值即可。

3.9 小结
对于基于点的全局阈值选取方法,除上述主要几种之外还许多,但大多都是以上述基本方法为基础,做出的改进方法或者对算法的优化,如使用递推方法以降低算法复杂性。
例如在文献[42]中,提出一种使目标和背景差距最大的阈值求取方法,类似于最大类间方差阈值法。是它的一种简化算法。
又如1984年Dunn等人[23]提出了均匀化误差阈值选取方法,这种方法实质上是要使将背景点误分为目标点的概率等于将目标点误分为背景点的概率。类似于最小误差阈值法。
近年来有一些新的研究手段被引入到阈值选取中。比如人工智能,在文献[24] 中,描述了如何用人工智能的方法,寻找直方图的谷底点,作为全局阈值分割。其它如神经网络,数学形态学[39][46],小波分析与变换[40]等等。
总的来说,基于点的全局阈值算法,与其它几大类方法相比,算法时间复杂度较低,易于实现,适合应用于在线实时图像处理系统。由于我的研究方向为机器视觉,所作的项目要求算法具有良好的实时性,因此针对基于点的全局阈值方法,阅读了较多的文献,在综述里叙述也相对比较详细。

4 基于区域的全局阈值选取方法
对一幅图像而言,不同的区域,比如说目标区域或背景区域,同一区域内的象素,在位置和灰度级上同时具有较强的一致性和相关性。
而在上述基于点的全局阈值选取方法中,有一个共同的弊病,那就是它们实际上只考虑了直方图提供的灰度级信息,而忽略了图像的空间位置细节,其结果就是它们对于最佳阈值并不是反映在直方图的谷点的情况会束手无策,不幸我们通常遇到的很多图像恰恰是这种情况。另一方面,完全不同的两幅图片却可以有相同的直方图,所以即使对于峰谷明显的情况,这些方法也不能保证你得到合理的阈值。于是,人们又提出了很多基于空间信息的阈值化方法。
可以说,局域区域的全局阈值选取方法,是基于点的方法,再加上考虑点领域内象素相关性质组合而成,所以某些方法常称为“二维xxx方法”。由于考虑了象素领域的相关性质,因此对噪声有一定抑止作用[41]。
4.1 二维熵阈值分割方法[25]
使用灰度级-局域平均灰度级形成的二维灰度直方图[43]进行阈值选取,这样就得到二维熵阈值化方法。

(二维灰度直方图: 灰度-领域平均灰度)
如图,在0区和1区,象素的灰度值与领域平均灰度值接近,说明一致性和相关性较强,应该大致属于目标或背景区域;2区和3区一致性和相关性较弱,可以理解为噪声或边界部分。二维熵阈值分割,就是选择(S,T)对,使得目标类和背景类的后验熵最大。(具体方法是一维熵阈值分割的推广,可参见上一节)
Abutaleb[26],和Pal]结合Kapur]和Kirby的方法,分别提出了各自的二维熵阈值化方法,其准则函数都是使目标熵和背景熵之和最大化。Brink[27]的方法则是使这两者中的较小者最大化,该方法的计算复杂度为 ,后来有人改进为递推快速算法将时间复杂度降为 (其中 为最大灰度级数)。

4.2 简单统计法
Kittler等人[28],[29]提出一种基于简单的图像统计的阈值选取方法。使用这种方法,阈值可以直接计算得到,从而避免了分析灰度直方图,也不涉及准则函数的优化。该方法的计算公式为
(19)
其中,

因为e(x,y)表征了点(x,y)领域的性质,因此本方法也属于基于区域的全局阈值法。

4.3 直方图变化法
从理论上说,直方图的谷底是非常理想的分割阈值,然后在实际应用中,图像常常受到噪声等的影响而使其直方图上原本分离的峰之间的谷底被填充,或者目标和背景的峰相距很近或者大小差不多,要检测他们的谷底就很难了。
在上一节基于点的全局阈值方法中,我们知道直方图凹面分析法的弊病是容易受到噪声干扰,对不同类型的图像,表现出不同的分割效果。往往容易得到假的谷底。这是由于原始的直方图是离散的,而且含噪声,没有考虑利用象素领域性质。
而直方图变化法,就是利用一些象素领域的局部性质变换原始的直方图为一个新的直方图。这个新的直方图与原始直方图相比,或者峰之间的谷底更深,或者谷转变成峰从而更易于检测。这里的象素领域局部性质,在很多方法中经常用的是象素的梯度值。
例如,由于目标区的象素具有一定的一致性和相关性,因此梯度值应该较小,背景区也类似。而边界区域或者噪声,就具有较大的梯度值。最简单的直方图变换方法,就是根据梯度值加权,梯度值小的象素权加大,梯度值大的象素权减小。这样,就可以使直方图的双峰更加突起,谷底更加凹陷。

4.4 其它基于区域的全局阈值法
松弛法利用邻域约束条件迭代改进线性方程系统的收敛特性,当用于图像阈值化时其思想是:首先根据灰度级按概率将像素分为“亮”和“暗”两类,然后按照领域像素的概率调整每个像素的概率,调整过程迭代进行,使得属于亮(暗)区域的像素“亮(暗)”的概率变得更大。
其它还有许多方法利用灰度值和梯度值散射图,或者利用灰度值和平均灰度值散射图。

5 局部阈值法和多阈值法

5.1 局部阈值(动态阈值)
当图像中有如下一些情况:有阴影,照度不均匀,各处的对比度不同,突发噪声,背景灰度变化等,如果只用一个固定的全局阈值对整幅图像进行分割,则由于不能兼顾图像各处的情况而使分割效果受到影响。有一种解决办法就是用与象素位置相关的一组阈值(即阈值使坐标的函数)来对图像各部分分别进行分割。这种与坐标相关的阈值也叫动态阈值,此方法也叫变化阈值法,或自适应阈值法。这类算法的时间复杂性可空间复杂性比较大,但是抗噪能力强,对一些用全局阈值不易分割的图像有较好的效果。
例如,一幅照度不均(左边亮右边暗)的原始图像为:

如果只选择一个全局阈值进行分割,那么将出现下面两种情况,都不能得到满意的效果。

(阈值低,对亮区效果好,则暗区差) (阈值高,对暗区效果好,则亮区差)

若使用局部阈值,则可分别在亮区和暗区选择不同的阈值,使得整体分割效果较为理性。

(按两个区域取局部阈值的分割结果)
进一步,若每个数字都用不同的局部阈值,则可达到更理想的分割效果。

5.1.1 阈值插值法
首先将图像分解成系列子图,由于子图相对原图很小,因此受阴影或对比度空间变化等带来的问题的影响会比较小。然后对每个子图计算一个局部阈值(此时的阈值可用任何一种固定阈值选取方法)。通过对这些子图所得到的阈值进行插值,就可以得到对原图中每个象素进行分割所需要的合理阈值。这里对应每个象素的阈值合起来构成的一个曲面,叫做阈值曲面。

5.1.2 水线阈值算法
水线(也称分水岭或流域,watershed)阈值算法可以看成是一种特殊的自适应迭代阈值方法,它的基本思想是:初始时,使用一个较大的阈值将两个目标分开,但目标间的间隙很大;在减小阈值的过程中,两个目标的边界会相向扩张,它们接触前所保留的最后像素集合就给出了目标间的最终边界,此时也就得到了阈值。

5.1.3 其它的局部阈值法
文献[30]提出了一种基于阈值曲面的二维遗传算法。遗传算法是基于进化论中自然选择机理的、并行的、统计的随机化搜索方法,所以在图像处理中常用来确定分割阈值。
文献[31] [32]中提出一种基于局部梯度最大值的插值方法。首先平滑图像,并求得具有局部梯度最大值的像素点,然后利用这些像素点的位置和灰度在图像上内插,得到灰度级阈值表面。
除此之外,典型的局部阈值方法还有White和Rohrer[33]的加权移动平均阈值方法,Perez和Gonzalez[34]的适用于非均匀照射下图像的局部阈值方法以及Shio[35]的与照射无关的对比度度量阈值方法等。总的来说,这类算法的时间和空间复杂度都较大,但是抗噪能力强,对一些使用全局阈值法不宜分割的图像具有较好的效果。

5.2 多阈值法
很显然,如果图像中含有占据不同灰度级区域的几个目标,则需要使用多个阈值才能将它们分开。其实多域值分割,可以看作单阈值分割的推广,前面讨论的大部分阈值化技术,诸如Otsu的最大类间方差法, Kapur的最大熵方法、矩量保持法和最小误差法等等都可以推广到多阈值的情形。以下介绍另外几种多阈值方法。
5.2.1 基于小波的多域值方法。
小波变换的多分辨率分析能力也可以用于直方图分析[36],一种基于直方图分析的多阈值选取方法思路如下:首先在粗分辨率下,根据直方图中独立峰的个数确定分割区域的类数,这里要求独立峰应该满足三个条件:(1)具有一定的灰度范围;(2)具有一定的峰下面积;(3)具有一定的峰谷差。然后,在相邻峰之间确定最佳阈值,这一步可以利用多分辨的层次结构进行。首先在最低分辨率一层进行,然后逐渐向高层推进,直到最高分辨率。可以基于最小距离判据对在最低层选取的所有阈值逐层跟踪,最后以最高分辨率层的阈值为最佳阈值。
5.2.2 基于边界点的递归多域值方法。
这是一种递归的多阈值方法。首先,将象素点分为边界点和非边界点两类,边界点再根据它们的邻域的亮度分为较亮的边界点和较暗的边界点两类,然后用这两类边界点分别作直方图,取两个直方图中的最高峰多对应的灰度级作为阈值。接下去,再分别对灰度级高于和低于此阈值的像素点递归的使用这一方法,直至得到预定的阈值数。

5.2.3 均衡对比度递归多域值方法。
首先,对每一个可能阈值计算它对应于它的平均对比度

其中, 是阈值为 时图像总的对比度, 是阈值 检测到的边界点的数目。然后,选择 的直方图上的峰值所对应的灰度级为最佳阈值。对于多阈值情形,首先用这种方法确定一个初始阈值,接着,去掉初始阈值检测到的边界点的贡献再做一次 的直方图,并依据新的直方图选择下一个阈值。这一过程可以这样一直进行下去,直到任何阈值的最大平均对比度小于某个给定的限制为止。

6 阈值化算法评价简介
尽管人们在图像分割方面做了许多研究工作,但由于尚无通用的分割理论,现已提出的分割算法大都是针对具体问题的,并没有一种适合于所有图像的通用的分割算法。另一方面,给定一个实际图像分割问题要选择合用的分割算法也还没有标准的方法。为解决这些问题需要研究对图像分割的评价问题。分割评价是改进和提高现有算法性能、改善分割质量和指导新算法研究的重要手段。
然而,如同所有的图像分割方法一样,阈值化结果的评价是一个比较困难的问题。事实上对图像分割本身还缺乏比较系统的精确的研究,因此对其评价则更差一些。人们先后已经提出了几十个评价准则。这些准则中又有定性的,也有定量的;有分析算法的,也有检测实验结果的,文献[37]将它们大致分为13类。
文献[4] 中选择摄影师、建筑物和模特三幅图像作为标准图像,并采用趋于一致性度量和形状参数对几种常用的全局阈值方法的分割结果进行了评价。结果表明对于这三幅图像,如果希望得到的二值图像比较均匀且目标的形状较好,推荐使用最大熵方法、矩量保持方法和最大类间方差法。
文献[38] 中以磁盘及鹤模型作标准图像,在噪声条件下用错分概率、形状和均匀性度量作为标准评估了五种常见的整体阈值选取方法的性能。这五种方法是四元树方法、矩量保持法、最大类间方差法、最大熵方法和简单统计法。结果表明各种方法的性能不仅与所处理的图像有关,而且也和所选用的准则有关。该文献也指出,对于一般实时应用来说,可以选择最大类间方差方法和简单统计法。
最后,评价的目的是为了能指导、改进和提高分割,如何把评价和分割应用联系起来尚有许多工作要做。一个可能的方法是结合人工智能技术,建立分割专家系统[45],以有效的利用评价结果进行归纳推理,从而把对图像的分割由目前比较盲目的试验阶段推进到系统地实现的阶段。

9. Heursure阈值算法是什么

rigrsure阈值,是一种基于Stein的无偏似然估计原理的自适应阈值选择;
sqtwolog阈值,采用的是一种固定的阈值形式,它所产生的阈值为2log(length(x))
heursure阈值,是前两种阈值法的综合,所选择的是最优预测变量阈值,当信噪比很小,阈值估计有很大噪声时就需要采用这种固定的阈值形式

刚在写论文,随手粘贴过来。

阅读全文

与阈值自适应的累加算法相关的资料

热点内容
优信二手车解压后过户 浏览:58
Windows常用c编译器 浏览:776
关于改善国家网络安全的行政命令 浏览:830
安卓如何下载网易荒野pc服 浏览:651
javainetaddress 浏览:102
苹果4s固件下载完了怎么解压 浏览:997
命令zpa 浏览:282
python编译器小程序 浏览:941
在app上看视频怎么光线调暗 浏览:537
可以中文解压的解压软件 浏览:589
安卓卸载组件应用怎么安装 浏览:910
使用面向对象编程的方式 浏览:338
程序员项目经理的年终总结范文 浏览:925
内衣的加密设计用来干嘛的 浏览:429
淮安数据加密 浏览:289
魔高一丈指标源码 浏览:979
松下php研究所 浏览:167
c回调java 浏览:398
梦幻端游长安地图互通源码 浏览:742
电脑本地文件如何上传服务器 浏览:309