细化算法研究

合集下载

基于阶梯细化的图像放大算法研究解读

基于阶梯细化的图像放大算法研究解读

基于阶梯细化的图像放大算法研究
数字图像放大是重要的图像处理技术之一,在众多领域都有重要的应用。

数字图像放大就是将原始图像的分辨率提高,基本的方法是图像插值。

图像插值的算法很多,如经典的最近邻域插值、双线性插值等。

图像放大算法面临的两个主要问题是放大的图像会出现细节模糊化和边缘的锯齿失真。

本论文针对图像放大时边缘出现的锯齿失真,分析锯齿出现的原因,提出数字图像中的边缘是由一系列阶梯构成的,是不连续的;并认为边缘的这种不连续性在图像放大过程中也被放大,从而产生锯齿失真。

根据上述分析,本论文提出了基于阶梯细化的图像放大算法。

该算法是一种综合性的算法,即在图像的非边缘区域采用经典的双线性插值算法;同时根据Canny边缘检测的结果,进一步进行阶梯检测,滤除不会产生锯齿失真的竖直和水平边缘,在使用经典算法会产生明显锯齿失真的包含一系列阶梯的边缘区域,运用基于阶梯细化的插值算法。

该插值算法在放大图像的同时,抑制了边缘中的阶梯被放大,从而达到减少锯齿失真的目的。

最后的实验结果对比和分析表明,在阈值设置合适的前提下,该算法可以在一定程度上抑制边缘锯齿失真。

【关键词相关文档搜索】:通信与信息系统; 图像处理; 图像放大; 阶梯细化; 插值; 锯齿效应
【作者相关信息搜索】:兰州大学;通信与信息系统;万毅;侯国强;。

Zhang快速并行细化算法

Zhang快速并行细化算法

Zhang快速并行细化算法最近的研究涉及获取二值图像骨架(图象的中轴线),网上找到许多方法,Zhang快速并行细化算法是出现次数最多的算法,看了几篇博客,又下载了提出这个算法的文献,感觉这个方法很容易理解,编程也容易,其实最后也没花多少时间就成功了,VB6.0编写的程序,用到了函数库MatrixVB,这里分享一下心得。

1.算法简介图1 8邻域系统图1表示以P1为中心的8邻域系统,P2~P9代表与P1相邻的8个像素点,1.1 细化步骤1删除同时满足下列条件的边界点:①2≤N(P1)≤6;②S(P1)=1;③P2×P4×P6=0;④P4×P6×P8=0;其中:N(P1)是P1的非零邻点的个数,S(P1)是以P2,P3,…,P9,P2为序时这些点的值从0到1变化的次数。

1.2 细化步骤2删除同时满足下列条件的边界点:①2≤N(P1)≤6;②S(P1)=1;③P2×P4×P8=0;④P2×P6×P8=0;以上两步操作构成一次迭代,直至没有点再满足标记条件,这时剩下的点组成区域即为细化后骨架。

2.程序及细化结果用VB6.0编写的程序,用到了函数库MatrixVB(需要的话可以到网上去搜,很老的东西了)。

2.1 模块部分这部分包括自定义数据类型(相当于C语言里的结构体),定义了一些函数。

Option ExplicitType necessary_conditions '4个条件N_P1 As IntegerS_P1 As IntegerMult_P2P4P6 As IntegerMult_P4P6P8 As IntegerMult_P2P4P8 As IntegerMult_P2P6P8 As IntegerEnd TypeType positionx As Integery As IntegerEnd Type'**************************************************************'计算4个条件的值'输入:P1点的坐标,待处理的二值图binary_image'输出:4个条件的值'************************************************************** Function obtain_necessary_conditions_value(x%, y%, binary_image) As necessary_conditionsDim i%, cnt1%, cnt2%, neighbor8%(9)'--------------------条件1---------------------If binary_image(x - 1, y) = 1 Then neighbor8(2) = 1If binary_image(x - 1, y + 1) = 1 Then neighbor8(3) = 1If binary_image(x, y + 1) = 1 Then neighbor8(4) = 1If binary_image(x + 1, y + 1) = 1 Then neighbor8(5) = 1If binary_image(x + 1, y) = 1 Then neighbor8(6) = 1If binary_image(x + 1, y - 1) = 1 Then neighbor8(7) = 1If binary_image(x, y - 1) = 1 Then neighbor8(8) = 1If binary_image(x - 1, y - 1) = 1 Then neighbor8(9) = 1cnt1 = 0cnt2 = 0'--------------------条件2---------------------For i = 2 To 9If neighbor8(i) = 1 Then cnt1 = cnt1 + 1Next i'--------------------条件3---------------------For i = 2 To 9 - 1If neighbor8(i) - neighbor8(i + 1) = -1 Then cnt2 = cnt2 + 1Next iIf neighbor8(9) - neighbor8(2) = -1 Then cnt2 = cnt2 + 1'--------------------条件4---------------------obtain_necessary_conditions_value.N_P1 = cnt1obtain_necessary_conditions_value.S_P1 = cnt2obtain_necessary_conditions_value.Mult_P2P4P6 = neighbor8(2) * neighbor8(4) * neighbor8(6)obtain_necessary_conditions_value.Mult_P2P4P8 = neighbor8(2) * neighbor8(4) * neighbor8(8)obtain_necessary_conditions_value.Mult_P2P6P8 = neighbor8(2) * neighbor8(6) * neighbor8(8)obtain_necessary_conditions_value.Mult_P4P6P8 = neighbor8(4) * neighbor8(6) * neighbor8(8)End Function'******************************************************************'Zhang快速并行细化算法'输入:待处理的二值图binary_image_buf'输出:细化后的二值图binary_image_buf'***************************************************************** Function Zhang_thinning_method(binary_image_buf)Dim rows%, cols%, delete_cnt%Dim i%, j%, k%Dim sign(5000) As position, n1%, n2%, n3%, n4%, n5%, n6%rows = UBound(binary_image_buf, 1)cols = UBound(binary_image_buf, 2)For k = 1 To 800'--------------------迭代的前半部分------------------------For i = 1 To rowsFor j = 1 To colsIf binary_image_buf(i, j) = 1 Thenn1 = obtain_necessary_conditions_value(i, j, binary_image_buf).N_P1n2 = obtain_necessary_conditions_value(i, j, binary_image_buf).S_P1n3 = obtain_necessary_conditions_value(i, j, binary_image_buf).Mult_P2P4P6n4 = obtain_necessary_conditions_value(i, j, binary_image_buf).Mult_P4P6P8If (n1 >= 2 And n1 <= 6) And n2 = 1 And n3 = 0 And n4 = 0 Thendelete_cnt = delete_cnt + 1sign(delete_cnt).x = isign(delete_cnt).y = jEnd IfEnd IfNext jNext iIf delete_cnt = 0 Then GoTo finishFor i = 1 To delete_cntbinary_image_buf(sign(i).x, sign(i).y) = 0Next idelete_cnt = 0'-------------迭代的后半部分--------------------------------For i = 1 To rowsFor j = 1 To colsIf binary_image_buf(i, j) = 1 Thenn1 = obtain_necessary_conditions_value(i, j, binary_image_buf).N_P1n2 = obtain_necessary_conditions_value(i, j, binary_image_buf).S_P1n3 = obtain_necessary_conditions_value(i, j, binary_image_buf).Mult_P2P4P8n4 = obtain_necessary_conditions_value(i, j, binary_image_buf).Mult_P2P6P8If (n1 >= 2 And n1 <= 6) And n2 = 1 And n3 = 0 And n4 = 0 Thendelete_cnt = delete_cnt + 1sign(delete_cnt).x = isign(delete_cnt).y = jEnd IfEnd IfNext jNext iIf delete_cnt = 0 Then GoTo finishFor i = 1 To delete_cntbinary_image_buf(sign(i).x, sign(i).y) = 0Next idelete_cnt = 0Next kfinish:End Function2.2 窗体部分Option ExplicitPrivate Sub Command1_Click()Dim bin, x1, y1, x2, y2, cnt1%, cnt2%Dim binary_image_buf%(), rows%, cols%Dim i%, j%Set x1 = zeros(5000, 1)Set y1 = zeros(5000, 1)Set x2 = zeros(5000, 1)Set y2 = zeros(5000, 1)bin = vbload(App.Path & "\bin4.txt")’导入二值图rows = Size(bin).r1(1)cols = Size(bin).r1(2)ReDim binary_image_buf(rows, cols), binary_3D_buf(rows, cols, 6)For i = 1 To rowsFor j = 1 To colsbinary_image_buf(i, j) = bin(i, j).r1(1)Next jNext iCall Zhang_thinning_method(binary_image_buf)’调用Zhang快速并行细化算法For i = 1 To rowsFor j = 1 To colsIf binary_image_buf(i, j) = 1 Then’找出骨架像素点的坐标cnt1 = cnt1 + 1x1(cnt1) = iy1(cnt1) = cols + 1 - jEnd IfIf bin(i, j).r1(1) = 1 Then’找出原二值图为1的点的坐标cnt2 = cnt2 + 1x2(cnt2) = iy2(cnt2) = cols + 1 - jEnd IfNext jNext ix1 = x1(linspace(1, cnt1, cnt1))y1 = y1(linspace(1, cnt1, cnt1))x2 = x2(linspace(1, cnt2, cnt2))y2 = y2(linspace(1, cnt2, cnt2))plot x2, y2, "k.", "markersize", 1’绘制原二值图hold "on"plot x1, y1, "r*", "markersize", 1’绘制骨架mset gca, "color", "w"End Sub3.运行结果。

Zhang-Suen图像细化算法python实现

Zhang-Suen图像细化算法python实现

Zhang-Suen图像细化算法python实现算法流程⾸先要反转原图像,因为算法之后所有的操作都将0作为前景,将1作为背景。

中⼼像素x_1(x,y)的8-近邻定义如下所⽰:考虑以下两个步骤步骤1:执⾏光栅扫描并标记满⾜以下5个条件的所有像素:这是⼀个⿊⾊像素;顺时针查看x2、x3、...、x9、x2时,从0到1的变化次数仅为1;x2、x3、...、x9中1的个数在2个以上6个以下;x2、x4、x6中⾄少有1个为1;x4、x6、x8中⾄少有1个为1;将满⾜条件的所有像素标为1步骤2:执⾏光栅扫描并标记满⾜以下5个条件的所有像素:这是⼀个⿊⾊像素;顺时针查看x2、x3、...、x9、x2时,从0到1的变化次数仅为1;x2、x3、...、x9中1的个数在2个以上6个以下;x2、x4、x8中⾄少有1个为1;x2、x6、x8中⾄少有1个为1;将满⾜条件的所有像素标为1反复执⾏步骤1和步骤2,直到没有点发⽣变化。

python实现:import cv2import numpy as npimport matplotlib.pyplot as plt# Zhang Suen thining algorythmdef Zhang_Suen_thining(img):# get shapeH, W, C = img.shape# prepare out imageout = np.zeros((H, W), dtype=np.int)out[img[..., 0] > 0] = 1# inverseout = 1 - outwhile True:s1 = []s2 = []# step 1 ( rasta scan )for y in range(1, H-1):for x in range(1, W-1):# condition 1if out[y, x] > 0:continue# condition 2f1 = 0if (out[y-1, x+1] - out[y-1, x]) == 1:f1 += 1if (out[y, x+1] - out[y-1, x+1]) == 1:f1 += 1if (out[y+1, x+1] - out[y, x+1]) == 1:f1 += 1if (out[y+1, x] - out[y+1,x+1]) == 1:f1 += 1if (out[y+1, x-1] - out[y+1, x]) == 1:f1 += 1if (out[y, x-1] - out[y+1, x-1]) == 1:f1 += 1if (out[y-1, x-1] - out[y, x-1]) == 1:f1 += 1if (out[y-1, x] - out[y-1, x-1]) == 1:f1 += 1if f1 != 1:continue# condition 3f2 = np.sum(out[y-1:y+2, x-1:x+2])if f2 < 2 or f2 > 6:continue# condition 4# x2 x4 x6if (out[y-1, x] + out[y, x+1] + out[y+1, x]) < 1 : continue# condition 5# x4 x6 x8if (out[y, x+1] + out[y+1, x] + out[y, x-1]) < 1 : continues1.append([y, x])for v in s1:out[v[0], v[1]] = 1# step 2 ( rasta scan )for y in range(1, H-1):for x in range(1, W-1):# condition 1if out[y, x] > 0:continue# condition 2f1 = 0if (out[y-1, x+1] - out[y-1, x]) == 1:f1 += 1if (out[y, x+1] - out[y-1, x+1]) == 1:f1 += 1if (out[y+1, x+1] - out[y, x+1]) == 1:f1 += 1if (out[y+1, x] - out[y+1,x+1]) == 1:f1 += 1if (out[y+1, x-1] - out[y+1, x]) == 1:f1 += 1if (out[y, x-1] - out[y+1, x-1]) == 1:f1 += 1if (out[y-1, x-1] - out[y, x-1]) == 1:f1 += 1if (out[y-1, x] - out[y-1, x-1]) == 1:f1 += 1if f1 != 1:continue# condition 3f2 = np.sum(out[y-1:y+2, x-1:x+2])if f2 < 2 or f2 > 6:continue# condition 4# x2 x4 x8if (out[y-1, x] + out[y, x+1] + out[y, x-1]) < 1 : continue# condition 5# x2 x6 x8if (out[y-1, x] + out[y+1, x] + out[y, x-1]) < 1 : continues2.append([y, x])for v in s2:out[v[0], v[1]] = 1# if not any pixel is changedif len(s1) < 1 and len(s2) < 1:breakout = 1 - outout = out.astype(np.uint8) * 255return out# Read imageimg = cv2.imread("../thin.png").astype(np.float32) # Zhang Suen thiningout = Zhang_Suen_thining(img)# Save resultcv2.imwrite("out.png", out)cv2.imshow("result", out)cv2.waitKey(0)cv2.destroyAllWindows()实验结果:。

几种频谱分析细化方法简介

几种频谱分析细化方法简介

高分辨率频谱分析算法实现【摘要】随着电子技术的迅速发展,信号处理已经深入到很多的工程领域,信号频域的特征越来越受到重视。

在信号通信、雷达对抗、音频分析、机械诊断等领域,频谱分析技术起到很大的作用。

基于数字信号处理(DSP)技术的频谱分析,如果采用传统的快速傅里叶(FFT)算法则只能比较粗略的计算频谱,且分辨率不高;但是采用频谱细化技术就能对频域信号中感兴趣的局部频段进行频谱分析,就能得到很高的分辨率.常见的方法有基于复调制的ZoomFFT 法、Chirp-Z 变换、Yip—ZOOM 变换等,但是从分析精度、计算效率、分辨率、灵活性等方面来看,基于复调制的ZoomFFT 方法是一种行之有效的方法。

实验结果表明该方案具有分辨率高、速度快的特点,具有较高的工程应用价值.【关键字】频谱分析;频谱细化;Z变换【Abstract】With the rapid development of electrical technology, signal processing has been widely used in many engineering fields and special attention has been paid to the characteristic of signal frequency。

The spectrum analyzer technology takes a great part in the fields like signal communication, rador countermeasures, audio analysis, mechanism diagnose。

Based on digital signal processing (DSP)technology,the spectrum analysis system, while the use of the fast Fu Liye traditional (FFT) algorithm can calculate the frequency spectrum is rough,and the resolution is not high; but using spectrum zoom technique can analyze the frequency spectrum of the local frequency segment interested in frequency domain signal,can get very high resolution。

基于距离场的骨架细化算法

基于距离场的骨架细化算法

基于距离场骨架的细化算法摘要:骨架是现在物体识别的一种有效手段,保存和处理对象的拓扑信息,是图像分析的重要研究之一。

传统的距离场和基于图像求取的骨架难以保证连通,而细化所得的骨架受噪声影响较大,不能保证结果的准确性,但是细化在骨架识别中起到举重若轻的作用。

本文提出一种优良的骨架细化和骨架提取算法,将经典的距离变换和细化相结合,使骨架在原有识别的基础上更加的精确。

关键词:骨架提取;细化算法;距离场。

1引言骨架(Skeleton)是一种中轴变换用来描述物体的拓扑结构的主要手段之一,首先由Blum提出,它是一种线条状的几何体,线条位于物体的几何中心,有着和原物体相同的拓扑结构,在保持原物体的形状信息的同时,尽量减少了原物体的冗余信息。

骨架有着广泛的应用比如形状描述、文字识别、工程图处理、图像重建、压缩编码和红外图像识别等。

骨架的提取算法主要分为两类:一类是基于细化的算法,另一类是基于距离场的方法。

细化算法是采用迭代的手段不断的剥除目标的边界点,并且保留边界上满足骨架特性的点,直到没有多余的边界可以剥除,剩下的就是骨架。

这个方法在连续域是正确的,但由于图像是离散点,在向内推进过程中无法按照图像的收缩方向进行。

提取的骨架是连续的,但骨架的定位不确定,这两种细化算法在距离场中都对距离场中的脊线有所偏离。

距离场的脊就是骨架线,由于脊的判断方法不准确,有时候很难鉴定一个点是否为距离场的脊,所有得到的点往往是一些离散点,一般的做法是找出距离场中的最大值按照一定的拓扑结构连接起来就构成了原图的骨架如图(1),此方法的结果是准确的但是不连续。

(1)2 基于细化的骨架提取图像的细化是对一个二值图像进行收缩的过程,按照原来的形状让其等比列变小,在连线域上即使收缩到很小的程度还是保持着原来的的形状。

根据细化过程的特点,便有人提出各种算法进行提取骨架,比如“烧草”算法,它的核心思想是,将目标内的所有点看做一个草原,同时从边界点火,再向目标内部蔓延,在蔓延的过程中,燃烧点重合的地方即为骨架点。

一种有效的指纹图像细化算法

一种有效的指纹图像细化算法

一种有效的指纹图像细化算法作者:何晶范九伦来源:《现代电子技术》2008年第18期摘要:OPTA方法是一个经典的指纹图像细化方法,针对OPTA法的不足提出改进的OPTA方法能够得到完全细化的指纹图像,细化后图像纹线扭曲小。

但是改进的OPTA方法还存在细化后的图像容易产生毛刺的不足,为此提出一组改进模板,即在改进的OPTA 模板的基础上增加一组去除毛刺的模板。

实验表明,通过该算法得到的细化指纹图像在保持连通性的基础上光滑无毛刺,取得了更为理想的细化结果。

关键词:图像处理;细化;模板;毛刺中图分类号:TP391.4 文献标识码:B 文章编号:1004373X(2008)1814303An Effective Thinning Algorithm for Fingerprint ImageHE Jing,FAN Jiulun(Xi′an Institute of Post and Telecommunications,Xi′an,710061,China)Abstract:OPTA method is a classical thinning method for fingerprint image.Improved OPTA method,which is proposed to overcome the insufficiency of the OPTA method,can obtain a complete thinning result,and can eliminate the distortion of the skeleton.But the improved OPTA thinning algorithm has a deficiency of being easy to get burrs after thinning.To deal with this problem,a set of ameliorative templates is added in this paper.Experimental results show that the new algorithm can not only keep connective,but also keep smooth without burrs.More ideal thinning result is obtained.Keywords:image processing;thinning;template;burr1 引言迄今为止,生物特征识别技术已经成为最为方便与安全的识别技术[1]。

基于算术运算的改进细化算法

基于算术运算的改进细化算法

基于算术运算的改进细化算法基于算术运算的改进细化算法改进细化算法是一种高效而稳健的迭代算法,在很多科学和工程领域广泛应用。

该算法主要是通过反复迭代求解较为复杂的非线性方程,来逐步优化目标函数,从而得到更好的解。

然而,细化算法在进行迭代计算时往往需要进行大量的运算,因此使用高效的算术运算方法可以有效地提高算法的计算效率和精度。

本文将介绍基于算术运算的改进细化算法,在实际应用中如何应用和优化。

一、改进细化算法概述改进细化算法的主要思想是通过迭代优化过程,不断逼近非线性方程的最优解。

在迭代过程中,算法会使用一些高效的数值优化技术,如牛顿迭代、Broyden-Fletcher-Goldfarb-Shanno(BFGS)算法等,以逐步优化目标函数的值。

通过不断细化,可以得到越来越精确的解。

改进细化算法与一般细化算法相比,具有更高的计算效率和精度。

它可以更快地收敛到最优解,同时保证迭代过程不会陷入局部最优解。

此外,改进细化算法还可以克服函数奇异性和不连续性等问题,使得该算法具有广泛的适用范围。

二、算术运算优化方法细化算法的计算过程中需要大量的算术运算,因此使用高效的算术运算方法可以显著提高算法的计算效率和精度。

下面介绍几种常用的算术运算优化方法。

1.矩阵优化在使用BFGS算法进行迭代优化时,需要不断求解矩阵的逆。

然而,矩阵的逆通常是一项非常耗时的计算,因此使用一些特殊的矩阵优化技巧可以显著提高算法的计算效率。

例如,可以使用逆迹技术或稳定低秩分解等技术来快速求解矩阵的逆。

这些技术可以大大减少计算时间,并且保证计算结果的准确性。

2.向量化运算使用向量化运算可以显著提高计算效率。

向量化运算将多个数值计算操作合并为一个单一的矩阵或向量运算。

这样可以使得计算过程更加并行化,提高运算效率。

例如,可以使用SIMD指令集或数据并行技术等向量化运算技术。

这些技术可以同时处理多个数值数据,大大提高了算法的计算效率。

3.误差控制技术在进行算术运算时,误差是不可避免的。

细化算法研究

细化算法研究

论文中文摘要毕业设计说明书(论文)外文摘要1 绪论图像的细化是数字图像预处理中的重要的一个核心环节。

图像细化在图像分析和图像识别中如汉子识别、笔迹鉴别。

指纹分析中有着广泛的应用。

图像的细化主要有以下几个基本要求:(1)骨架图像必须保持原图像的曲线连通性。

(2)细化结果尽量是原图像的中心线。

(3)骨架保持原来图形的拓扑结构。

(4)保留曲线的端点。

(5)细化处理速度快。

(6)交叉部分中心线不畸变。

虽然现在人们对细化有着广泛的研究,细化算法的方法有很多。

然而大多数算法如Hilditch算法和Rosenfield算法存在着细化后图形畸变,断点过多,在复杂的情况下关键信息的缺失等问题。

基于上诉考虑,传统的细化算法已经无法满足如今的数字图像处理要求。

因此,需要提出新的一种算法,来解决相关问题。

1.1 相关定义1.1.1串行与并行从处理的过程来看,主要可以分为串行和并行两类,前者对图像中当前象素的处理依据其邻域内象素的即时化结果,即对某一元素进行检测,如果该点是可删除点,则立即删除,且不同的细化阶段采用不同的处理方法;后者对当前的象素处理依据该象素及其邻域内各象素的前一轮迭代处理的结果,至始至终采用相同的细化准则。

即全部检测完汉子图像边缘上的点后再删除可删除点。

1.1.2骨架对图像细化的过程实际上是求一图像骨架的过程。

骨架是二维二值目标的重要拓扑描述,它是指图像中央的骨架部分,是描述图像几何及拓扑性质的重要特征之一。

骨架形状描述的方法是Blum最先提出来的,他使用的是中轴的概念。

如果用一个形象的比喻来说明骨架的含义,那就是设想在t=0的时刻,讲目标的边界各处同时点燃,火焰以匀速向目标内部蔓延,当火焰的前沿相交时火焰熄灭,那么火焰熄灭点的集合就构成了中轴,也就是图像的骨架。

例如一个长方形的骨架是它的长方向上的中轴线,正方形的骨架是它的中心点,圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。

细化的目的就是在将图像的骨架提取出来的同时保持图像细小部分的连通性,特别是在文字识别,地质识别,工业零件识别或图像理解中,先对被处理的图像进行细化有助于突出形状特点和减少冗余信息量。

几种细化算法的比较研究

几种细化算法的比较研究

!譬。

塑:璺且、几种细化算法的比较研究刘卫光李娟(中原工学院,河南郑州450007).脯要】该文综合分析了各种常用细化算法存在的问题,简单介绍并评价了,:种主要的改进方法,从而为相关技术人员在根据具体需要选择合适的细化算法时提供了方便,最后,对细化算法的研究方向给出了一些辰望。

陕键甸图像处理;细化;算法;结构元素细化(t hi nni ng)是采用各种手段逐层消去图形的外边界像素点,直至图形的像素宽度减少到一个像素,但同时保存能够表征图形的特征,然后使用像素跟踪的方法结合各个图形的判别函数将图形转换为矢量格式。

细化有四个原则:1)细化要取原图像的中心线,即细化过程应是对称的;2)细化不能改变原图像的连通性;3)细化时要保持原图像的基本特征,要尊重原图像:4)具有很好的稳定’I‰细化过程也就是对图像逐层剥落的过程,随着细化的进行,图像有规律地缩小。

传统细化算法有很多,有串行算法和并行算法。

常用的有H i,di t ch细化、D e ut c h细化和Pavl i di s细化和基于形态学的细化算法等。

'几种经典的细化算法1.1H i l di t ch算法H i l di t c h细化算法为是串行处理方法的一种,最终得到的是8条近邻连接线条。

其主要原理是每次扫描并删除图像上满足一定的条件的轮廓像素,直到图像上不存在可删除的轮廓像素为止。

文献【1脂出该方法适用于二值图像,即像素为1的区域为目标区域像素为0的区域为背景区域的图像。

在此算法中,目标像素P若同时满足以下条件即为可删除像素:1)P0+P2+P4+P6。

<3,2)N c=l:3)Pk(O≤k≤7)中至少有一个目标像素为1;4)P2=l或N c2=l;N c2为假定P2=0时P的联结数:5)P4=1或N c4=1。

N c4为假定P4=0时P的联结数。

联结数就是八邻域中互相分离的联结成分的个数。

12D eut c h细化算法文朗1l介绍D eut c h细化算法采用的处理方式为并行处理方式其算法吐是采用两层子循环。

基于燃火的手掌静脉图像细化技术研究

基于燃火的手掌静脉图像细化技术研究

基于燃火的手掌静脉图像细化技术研究【摘要】手掌静脉图像的细化技术在生物识别领域具有重要应用价值。

本文基于燃火算法,对手掌静脉图像进行了研究,包括图像采集、预处理和细化方法等方面。

实验结果表明,燃火算法在手掌静脉图像细化中表现出色,能有效提取出静脉特征,并具有较高的准确性和稳定性。

在技术应用前景方面,基于燃火的手掌静脉图像细化技术有望在生物识别、安防监控等领域得到广泛应用。

仍存在一些问题需要进一步改进,如提高图像采集的稳定性和准确性。

我们有必要继续深入研究和优化这一技术,不断提升其性能,以满足实际应用的需求。

.【关键词】手掌静脉图像、细化技术、燃火算法、预处理技术、实验分析、技术应用、改进方向、研究背景、研究意义、研究目的、结论、前景展望。

1. 引言1.1 研究背景手掌静脉识别技术是一种新兴的生物特征识别技术,其原理是通过采集人体手掌静脉图像,并进行处理和分析,从而实现对个体身份的认证。

与传统的指纹、虹膜识别技术相比,手掌静脉识别具有不可伪造、高安全性、易采集等优势,逐渐成为生物特征识别领域的研究热点之一。

当前,手掌静脉识别技术已经得到广泛应用于金融支付、门禁考勤、边境安检等领域,取得了显著的效果和成果。

现有的手掌静脉图像细化技术在提高准确性、降低复杂度等方面仍存在一定的局限性和挑战。

有必要开展基于燃火算法的手掌静脉图像细化技术研究,以提高系统的稳定性和实用性。

本研究旨在探讨基于燃火的手掌静脉图像细化技术,在解决现有技术所面临问题的为手掌静脉识别技术的进一步应用和发展提供技术支撑和参考。

1.2 研究意义手掌静脉图像细化技术在生物识别领域中具有重要的应用意义。

手掌静脉图像具有独特性高、稳定性好的特点,可以有效地提高生物识别系统的识别准确率和安全性,比传统的指纹、虹膜等生物特征更加安全可靠。

手掌静脉图像的采集简单快捷,用户友好性强,适用于各种场景和人群,可以广泛应用于各类生物识别系统中,如门禁系统、支付系统、医疗系统等。

基于数学形态学的细化算法

基于数学形态学的细化算法
产生 其它 形 态变换 的基础 。为 了讨 论数 学形 态学 的基本 变换 , 首先 有必 要做 出几 个假 设条 件 : 1处 理 的对 象 是数字 图像 , ) 图像 的各 点 为象元 , 其坐标 是整 数 , 作 (,) 记 IJ ;
2 讨论 的图像是二值 的, ) 即每个象元的取值范围为“” 1 ; 0 和“” 3 A为待处理的原图像( ) 其离散二值化结果也称作 目标点集)B为结构元素。 , 根据 以上 条 件 , 数 学形 态基 本变换 的定 义 和方法进 行描 述 。 可对
维普资讯
第 3 卷 第2 6 期
20 年 4月 07
贵 州 工 业 大 学 学 报 (自 然 科 学 版 )
J I AL0 Z I Ⅵ STY0FTI 0U FGUIH0 UNI R I 7 00Y LG
V0 . 6 No 2 13 . Ap i. 0 7 rl2 0
作者简介 : 王
娜 (9 0 , , 18 一)女 辽宁省辽阳人 , 读硕 士, 在 图形 图像方向。
维普资讯
第 2期

娜 , : 于数 学形 态学的 细化 算法 等 基
6 1
的所 有新 点 构成 的图像 便是 A被 b平 移 的结果 , 记作 .
( a r c ne d i ) N t aSi c i n ul e E t o
文章编号:0 90 9 (0 7 0 —0 00 1 0 . 1 3 2 0 )20 6 —5
基于数学形态学 的细化算法


娜 , 世 培 杜
( 州大学 信息 工程 学院 , 州 贵 阳 50 0 ) 贵 贵 5 03 要: 对二值 图像 处理 中细化 的 算法进 行 了研 究 , 介绍 了基 于形 态 学的 细化 算法 , 同时 , 对数

图像细化(骨架化)算法分析

图像细化(骨架化)算法分析

图像细化(⾻架化)算法分析图像细化(⾻架化)算法分析图像的细化是模式识别中很重要的⼀个技术,指的是将原本"臃肿"的像素简化为单像素相连接的⼆值图像(即类似⾻架的概念),细化的好坏直接影响到后⾯识别匹配的效率。

摘⾃某⽂章的话,细化就是经过⼀层层的剥离,从原来的图中去掉⼀些点,但仍要保持原来的形状,直到得到图像的⾻架。

⾻架,可以理解为图象的中轴,例如⼀个长⽅形的⾻架是它的长⽅向上的中轴线;正⽅形的⾻架是它的中⼼点;圆的⾻架是它的圆⼼,直线的⾻架是它⾃⾝,孤⽴点的⾻架也是⾃⾝。

下⾯先介绍经典的Zhang并⾏快速细化算法:设p1点的⼋邻域为:【 p9 p2 p3p8 p1 p4p7 p6 p5 】(其中p1为⽩点,如果以下四个条件同时满⾜,则删除p1,即令p1=0)其中迭代分为两个⼦过程:过程1 细化删除条件为:(1)、2 < =N(p1) <= 6, N(x)为x的8邻域中⿊点的数⽬(2)、A(p1)=1, A(x)指的是将p2-p8之间按序前后分别为0、1的对数(背景⾊:0)(3)、p2*p4*p6=0(4)、p4*p6*p8=0如果同时满⾜以上四个条件则该点可以删除(赋值为0)。

过程2 细化删除条件为:(1)、2 < =N(p1) <= 6, N(x)为x的8邻域中⿊点的数⽬(2)、A(p1)=1, A(x)指的是将p2-p8之间按序前后分别为0、1的对数(背景⾊:0)(3)、p2*p4*p8=0(4)、p2*p6*p8=0如果同时满⾜以上四个条件则该点可以删除。

代码如下:A.m1 function n=A(temp,i,j)2 %0->1的数⽬3 shuzu=[temp(i,j),temp(i-1,j),temp(i-1,j+1),temp(i,j+1),temp(i+1,j+1),temp(i+1,j),temp(i+1,j-1),temp(i,j-1),temp(i-1,j-1)];4 n=0;5for i=2:86if shuzu(i)==0&&shuzu(i+1)==17 n=n+1;8 end9 end主函数代码:1 test=input('Please input a digits image:','s'); %输⼊图像2 x=imread(test);3if ~isbw(x)4'请确保输⼊图像为⼆值化图像!';5else6 [height,width]=size(x);7 mark=1;8 % temp=zeros(height+2,width+2);9 % temp(2:height+1,2:width+1)=x(:,:);10 temp=x;11 imshow(temp);12while mark==113 mark=0;1415for i=2:height-116for j=2:width-117 condition=0;18 %判断P(r,c)是否为可细化像素19if temp(i,j)==120 n=0;21for ii=-1:122for jj=-1:123 n=n+temp(i+ii,j+jj);24 end25 end26if (n>=3 && n<=7)27 condition=condition+1;28 end29if A(temp,i,j)==130 condition=condition+1;31 end32if temp(i-1,j)*temp(i,j+1)*temp(i+1,j)==033 condition=condition+1;34 end35if temp(i,j+1)*temp(i+1,j)*temp(i,j-1)==036 condition=condition+1;37 end38if condition==439 mark=1;40 temp(i,j)=0;41 end42 end43 end44 end45 figure;imshow(temp);464748for i=2:height-149for j=2:width-150 condition=0;51 %判断P(r,c)是否为可细化像素52if temp(i,j)==153 n=0;54for ii=-1:155for jj=-1:156 n=n+temp(i+ii,j+jj);57 end58 end59if (n>=3 && n<=7)60 condition=condition+1;61 end62if A(temp,i,j)==163 condition=condition+1;64 end65if temp(i-1,j)*temp(i,j+1)*temp(i,j-1)==066 condition=condition+1;67 end68if temp(i,j-1)*temp(i+1,j)*temp(i,j-1)==069 condition=condition+1;70 end71if condition==472 mark=1;73 temp(i,j)=0;74 end75 end76 end77 end78 figure;imshow(temp);79 end80 end结果:。

一种空间三维图像的细化算法

一种空间三维图像的细化算法

2 基于双 目立体 视 觉的物 体 建模原 理
双 目立体视觉 技术 : 运用 二维成 像技 术 , 是 通过 相关 算 法, 运用二 维照片中 的特征坐标 , 成三 维坐标 的过程 , 合 需要 在不 同方 向采集二 维 图像 , 采集 的摄 像机机 位放 置 图 , 如下
图 1所 示 。

1 以物体特征 中相关 的三个特征点 为基 础 , ) 这三个点能
够两两相交 , 组成三角形 2 每个点 的坐标垂直 映射 , ) 不能在三角形 的外部 。 3 对一个点进行操作 的时候 , ) 它的变化会 只影 响到与之
条直线上 。采 集特 征时 , 在拍 摄 的时候 , 要保 证摄 像设 备 内部 的直线轴 与拍 摄 物 的空 间 坐标 系 的 ‰ 轴是 同一条 直
形状结构 原型的三维模型 J 。
1 引言
基于双 目立体视觉 技术 建立三维物体模 型 , 在当今 的物
体三维仿真 中是一个及 其热门的课题 。特别是 2 0世纪 9 O
但是 , 通过双 目立体视觉构建 的模 型有一个 传统 的难 点 问题 没有解决 , 就是建立 的三维模 型的清 晰度的 问题 。由于 用该方法建立 的模 型所需要的三维数据 点 , 都是 通过二 维图
完整 的数据点 三维坐标 了 J 。下面 以新增 一个 细化数 据点 为例 , 介绍整个细化算法 的一个流程 。 32 空间插入 数据点的选择 . 细化算法 的第 一步是 对 已经存 在的三 维模 型进行 三角
剖分 : 建立三角剖分需要准从一下规则 :
在 图 1中 , 、:表示 摄像 机 的实 际位 置。两个 摄像 机 00 之间存在着一定距 离 , 通过两个摄像 头对需要 转换 的物 体进

一种新的快速图像细化算法研究与实现

一种新的快速图像细化算法研究与实现
重 要 的技 术 之 一 。
l细化方 法的分 类
近二 十年 来 , 们 提 出 了许 多 细 化 算 法 , u n等 人 调 查 了 不 下 1 0种 细 化方 法 , 将 其 分 为 两 类 : 类 是 以 象 素 迭 代 删 除 为 基 人 Se O 并 一 础 的方 法 ; 一 类 是 以 非象 素 为 基 础 的方 法 。前 者 又 叫 窗 口法 , 利 用 一 个 窗 口算 子 依 次 从 左 到 右 , 上 到 下 移 动 , 另 是 从 根据 某 种 准 则 , 确定 中心 象 素 的保 留或 删 除 . 又 进 一 步分 为 串行 和 行 两 种 方 法 。串 行细 化 即是 一 边 榆 测满 足细 化 条 件 的 点一 边 删 除 细化 点 , 它 并 行 细 化 即 是检 测 细 化 点 的 时候 不 进 行 点 的 删 除 只进 行 标 记 , 在 检测 完 整 幅 图像 后 … 次性 去 除要 细 化 的点 。后 者 是 利 用 汉 字 或 图 而 一 像 结 构 特 征 的细 化 方 法 , 获 得 高质 量 的细 化 效果 , 算 法 复杂 , 算 量 大 。 能 但 计

关 键 词 : 字识 别 ; 化 算 法 ; 汉 细 特征 提 取 ; 图像 处理 中图 分 类号 : P 1 T 31 文献 标 识 码 : A 文 章编 号 : 0 9 3 4 (0 0 1 — 4 2 0 1 0 — 0 42 1 ) 6 4 8 — 3
A ห้องสมุดไป่ตู้ s m a e Thi ng A l r t Ne Fa tI g nni go ihm and I plm en ato m e t i n
2模 板 匹 配 的 R sn细 化 算 法 oe

三角网格曲面模型的拟均匀细化算法

三角网格曲面模型的拟均匀细化算法

A src: nfr tage s b iio r uvdsrae bets rpsd tot btatAu i m nlmehs dvs n o re f c jcipo oe hu o r i u i f c u o wi
t e n e s f o lx c mp tt n t ema h mai a p e e tt n o r i a u a e . h h e d mp e o u ai s h t t e t l e r s n a i f i n l r c s T e o c o wi h c r o o g sf c r e u f c sf s d s r t n o i i a ie s . e er g o s o e i i ai e s r u v d s ra e i i t ic e e i t t l d me h Th n t e i n ft n t z d me h a e r n i z h h i l p ri o e a c r i g t h r c so f t e r g o e o n t n S a o g t 山e x l sv a t in d c o d n o t e p e ii n o h e i n r c g i o O s t e t i e c u i e
后得 到 的 网格质 量 高。
关 键
ቤተ መጻሕፍቲ ባይዱ
词:计算机应用;拟均匀细化;D l ny e u a 三角化;曲面 a
文 章 编 号 :10 .182 0)30 8—6 0 30 5(080—020
中图分类号 :T 9 、 P3 1 7
文献 标识码 :A
Un f r ra g eM e h S b i ii n f rCu v d S r a e i m T i n l s u d vso o r e u c o f

数学形态学细化

数学形态学细化

数学形态学细化数学形态学细化是一种广泛应用于数字图像处理领域的技术。

通过对图像的不断分析与细化,进而提高图像的分辨率与质量,使得图像更加清晰,信息更加丰富。

该技术的应用可以追溯到20世纪70年代,之后逐渐发展完善。

现如今,数学形态学细化被广泛应用于医学图像处理,机器视觉等领域。

接下来我们将从步骤、应用等方面详细介绍该技术。

一、步骤1. 图像预处理:包括图像去噪、二值化等步骤。

2. 边缘提取:提取出图像中的轮廓、边缘等特征。

常用的边缘提取算法包括Canny、Sobel等算法。

3. 描述算法:对图像的特征进行描述和分类,或者叫特征提取。

能够科学而且全面途径,描述和特征提取也许并不容易,这个根据不同情况而定。

4. 形态学模板匹配:将图像中的目标物体与特定模板进行匹配,该步骤需要利用形态学中的膨胀、腐蚀等操作。

5. 形态学细化:在利用形态学模板匹配的基础上,不断去除掉图像中多余的像素点,形成更加细致的图像显示。

二、应用1. 数字图像处理:数学形态学细化是数字图像处理中不可或缺的一项技术。

应用在军事、空间探测等领域。

2. 医学图像处理:医学图像处理领域越来越重要了,如CT、MRI 等影像技术应用范围广,生产出多样化的影像资料,数学形态学细化可以更好的应用在血管图像的细化中,有利于医生更好的观察病人血管病情。

3. 计算机视觉:数学形态学细化常常应用于机器视觉中。

例如,可以使用形态学细化算法对机器视觉中抓取物品的图像进行处理,以便更准确地分析其特征和属性。

总之,数学形态学细化这项技术在数字图像处理、医学、机器视觉等领域都有广泛的应用。

通过不断升级、改进,它将为人工智能等新兴领域打下坚实的基础。

opencv实现二值图像细化的算法

opencv实现二值图像细化的算法

opencv实现⼆值图像细化的算法opencv实现⼆值图像细化的算法细化算法通常和⾻骼化、⾻架化算法是相同的意思,也就是thin算法或者skeleton算法。

虽然很多图像处理的教材上不是这么写的,具体原因可以看这篇论⽂,Louisa Lam, Seong-Whan Lee, Ching Y. Suen,“Thinning Methodologies-A Comprehensive Survey ”,IEEE TRANSACTIONS ON PATTERN ANALYSIS AND MACHINE INTELLIGENCE, VOL. 14, NO. 9, SEPTEMBER 1992 ,总结了⼏乎所有92年以前的经典细化算法。

函数:void cvThin( IplImage* src, IplImage* dst, int iterations=1)功能:将IPL_DEPTH_8U型⼆值图像进⾏细化参数:src,原始IPL_DEPTH_8U型⼆值图像dst,⽬标存储空间,必须事先分配好,且和原图像⼤⼩类型⼀致iterations,迭代次数参考⽂献:T. Y. Zhang and C. Y. Suen, “A fast parallel algorithm for thinning digital patterns,” Comm. ACM, vol. 27, no. 3, pp. 236-239, 1984.void cvThin( IplImage* src, IplImage* dst, int iterations=1){CvSize size = cvGetSize(src);cvCopy(src, dst);int n = 0,i = 0,j = 0;for(n=0; n<iterations; n++){IplImage* t_image = cvCloneImage(dst);for(i=0; i<size.height; i++){for(j=0; j<size.width; j++){if(CV_IMAGE_ELEM(t_image,byte,i,j)==1){int ap=0;int p2 = (i==0)?0:CV_IMAGE_ELEM(t_image,byte, i-1, j);int p3 = (i==0 || j==size.width-1)?0:CV_IMAGE_ELEM(t_image,byte, i-1, j+1);if (p2==0 && p3==1){ap++;}int p4 = (j==size.width-1)?0:CV_IMAGE_ELEM(t_image,byte,i,j+1);if(p3==0 && p4==1){ap++;}int p5 = (i==size.height-1 || j==size.width-1)?0:CV_IMAGE_ELEM(t_image,byte,i+1,j+1);if(p4==0 && p5==1){ap++;}int p6 = (i==size.height-1)?0:CV_IMAGE_ELEM(t_image,byte,i+1,j);if(p5==0 && p6==1){ap++;}int p7 = (i==size.height-1 || j==0)?0:CV_IMAGE_ELEM(t_image,byte,i+1,j-1);if(p6==0 && p7==1){ap++;}int p8 = (j==0)?0:CV_IMAGE_ELEM(t_image,byte,i,j-1);if(p7==0 && p8==1){ap++;}int p9 = (i==0 || j==0)?0:CV_IMAGE_ELEM(t_image,byte,i-1,j-1);if(p8==0 && p9==1){ap++;}if(p9==0 && p2==1){ap++;}if((p2+p3+p4+p5+p6+p7+p8+p9)>1 && (p2+p3+p4+p5+p6+p7+p8+p9)<7){if(ap==1){if(!(p2 && p4 && p6)){if(!(p4 && p6 && p8)){CV_IMAGE_ELEM(dst,byte,i,j)=0;}}}}}}}cvReleaseImage(&t_image);t_image = cvCloneImage(dst);for(i=0; i<size.height; i++){for(int j=0; j<size.width; j++){if(CV_IMAGE_ELEM(t_image,byte,i,j)==1){int ap=0;int p2 = (i==0)?0:CV_IMAGE_ELEM(t_image,byte, i-1, j);int p3 = (i==0 || j==size.width-1)?0:CV_IMAGE_ELEM(t_image,byte, i-1, j+1);if (p2==0 && p3==1){ap++;}int p4 = (j==size.width-1)?0:CV_IMAGE_ELEM(t_image,byte,i,j+1);if(p3==0 && p4==1){ap++;}int p5 = (i==size.height-1 || j==size.width-1)?0:CV_IMAGE_ELEM(t_image,byte,i+1,j+1);if(p4==0 && p5==1){ap++;}int p6 = (i==size.height-1)?0:CV_IMAGE_ELEM(t_image,byte,i+1,j);if(p5==0 && p6==1){ap++;}int p7 = (i==size.height-1 || j==0)?0:CV_IMAGE_ELEM(t_image,byte,i+1,j-1); if(p6==0 && p7==1){ap++;}int p8 = (j==0)?0:CV_IMAGE_ELEM(t_image,byte,i,j-1);if(p7==0 && p8==1){ap++;}int p9 = (i==0 || j==0)?0:CV_IMAGE_ELEM(t_image,byte,i-1,j-1);if(p8==0 && p9==1){ap++;}if(p9==0 && p2==1){ap++;}if((p2+p3+p4+p5+p6+p7+p8+p9)>1 && (p2+p3+p4+p5+p6+p7+p8+p9)<7) {if(ap==1){if(p2*p4*p8==0){if(p2*p6*p8==0){CV_IMAGE_ELEM(dst, byte,i,j)=0;}}}}}}}cvReleaseImage(&t_image);}}//使⽤举例#include "cxcore.h"#include "cv.h"#include "highgui.h"int main(int argc, char* argv[]){if(argc!=2){return 0;}IplImage *pSrc = NULL,*pDst = NULL,*pTmp = NULL;//传⼊⼀个灰度图像pSrc = cvLoadImage(argv[1],CV_LOAD_IMAGE_GRAYSCALE);if(!pSrc){return 0;}pTmp = cvCloneImage(pSrc);pDst = cvCreateImage(cvGetSize(pSrc),pSrc->depth,pSrc->nChannels);cvZero(pDst);cvThreshold(pSrc,pTmp,128,1,CV_THRESH_BINARY_INV);//做⼆值处理,将图像转换成0,1格式 //cvSaveImage("c://Threshold.bmp",pTmp,0);cvThin(pTmp,pDst,8);//细化,通过修改iterations参数进⼀步细化cvNamedWindow("src",1);cvNamedWindow("dst",1);cvShowImage("src",pSrc);//将⼆值图像转换成灰度,以便显⽰int i = 0,j = 0;CvSize size = cvGetSize(pDst);for(i=0; i<size.height; i++){for(j=0; j<size.width; j++){if(CV_IMAGE_ELEM(pDst,uchar,i,j)==1){CV_IMAGE_ELEM(pDst,uchar,i,j) = 0;}else{CV_IMAGE_ELEM(pDst,uchar,i,j) = 255;}}}//cvSaveImage("c://thin.bmp",pDst);cvShowImage("dst",pDst);cvWaitKey(0);cvReleaseImage(&pSrc);cvReleaseImage(&pDst);cvReleaseImage(&pTmp);cvDestroyWindow("src");cvDestroyWindow("dst");return 0;}。

图像细化算法 2

图像细化算法 2

图像细化算法一、细化算法简介图像细化(Image Thinning),一般指二值图像的骨架化(Image keletonization)的一种操作运算。

所谓的细化就是经过一层层的剥离,从原来的图中去掉一些点,但仍要保持原来的形状,直到得到图像的骨架。

骨架,可以理解为图象的中轴。

好的细化算法一定要满足:∙收敛性;∙保证细化后细线的连通性∙保持原图的基本形状∙减少笔画相交处的畸变∙细化结果是原图像的中心线∙细化的快速性和迭代次数少依据是否使用迭代运算可以分为两类:(1)非迭代算法一次即产生骨架,如基于距离变换的方法。

游程长度编码细化等。

(2)迭代算法即重复删除图像边缘满足一定条件的像素,最终得到单像素宽带骨架。

迭代方法依据其检查像素的方法又可以再分成①串行算法是否删除像素在每次迭代的执行中是固定顺序的,它不仅取决于前次迭代的结果,也取决于本次迭代中已处理过像素点分布情况.②并行算法像素点删除与否与像素值图像中的顺序无关,仅取决于前次迭代的结果二、本文所用算法我所采用的是Zhang并行快速细化算法,它的原理也很简单:我们对一副二值图像进行骨架提取,就是删除不需要的轮廓点,只保留其骨架点。

假设一个像素点,我们定义该点为p1,则它的八邻域点p2->p9位置如下图所示,该算法考虑p1点邻域的实际情况,以便决定是否删除p1点。

假设我们处理的为二值图像,背景为黑色,值为0,要细化的前景物体像素值为1。

算法的描述如下。

首先复制源图像到目地图像,然后建立一个临时图像,接着执行下面操作:1. 把目地图像复制给临时图像,对临时图像进行一次扫描,对于不为0的点,如果满足以下四个条件,则在目地图像中删除该点(就是设置该像素为0),这里p2,…,p9是对应位置的像素灰度值(其为1或者0)。

a. 2<= p2+p3+p4+p5+p6+p7+p8+p9<=6大于等于2会保证p1点不是端点或孤立点,因为删除端点和孤立点是不合理的,小于等于6保证p1点是一个边界点,而不是一个内部点。

图像放大中的边缘细化算法研究

图像放大中的边缘细化算法研究
Ab ta t sr c J g isdsot n o ee gsma c u n i g o mig I re ors ans c itrin,nti p p ra ma ez o n age itri nt d e yo c ri maez o n .n od rt et i u h dsot o h r o i s a e ni g o mig h
vrcl de hc i o pou e age ds ro ;u i deaes hr eeejgi io i i u hnui lsi l — e i gsw i wlnt rd c gi iot n btneg ra eesvr g sd t o wlocr e s gcas a ag ta e h l j s t i w a e sr n l t w n c l o
孔繁庭 侯国强
( 甘肃联合 大学 电子信 息工程 学院 甘肃 兰州 70 0 ) 30 0


当图像放大 时边缘会 出现锯齿失 真, 了抑制这 种失真 , 出 了边 缘 阶梯细化 的图像放 大算法。该算 法在 图像 的非边 缘 为 提
区域采用经典 的双线性插值算 法; 同时根据 C n y 缘检 测 的结果 , an 边 进一步进 行 阶梯 检测 , 除不会产 生锯齿 失真 的竖直 和水平边 滤 缘; 而在使 用经典算 法会 产生严重锯齿 失真的边缘 区域 , 用基于 阶梯细化 的插 值算法 ; 运 该插 值算法在放大 图像 的 同时 , 抑制边缘 中 的阶梯被放 大, 而达 到减少 锯齿失真 的 目的。实验结果表 明, 从 该算法 比经典算 法更能有效地抑制锯 齿失真。
第 2 第 4期 7卷
21 0 0年 4月
计 算机 应 用与软 件
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

论文中文摘要毕业设计说明书(论文)外文摘要1 绪论图像的细化是数字图像预处理中的重要的一个核心环节。

图像细化在图像分析和图像识别中如汉子识别、笔迹鉴别。

指纹分析中有着广泛的应用。

图像的细化主要有以下几个基本要求:(1)骨架图像必须保持原图像的曲线连通性。

(2)细化结果尽量是原图像的中心线。

(3)骨架保持原来图形的拓扑结构。

(4)保留曲线的端点。

(5)细化处理速度快。

(6)交叉部分中心线不畸变。

虽然现在人们对细化有着广泛的研究,细化算法的方法有很多。

然而大多数算法如Hilditch算法和Rosenfield算法存在着细化后图形畸变,断点过多,在复杂的情况下关键信息的缺失等问题。

基于上诉考虑,传统的细化算法已经无法满足如今的数字图像处理要求。

因此,需要提出新的一种算法,来解决相关问题。

1.1 相关定义1.1.1串行与并行从处理的过程来看,主要可以分为串行和并行两类,前者对图像中当前象素的处理依据其邻域内象素的即时化结果,即对某一元素进行检测,如果该点是可删除点,则立即删除,且不同的细化阶段采用不同的处理方法;后者对当前的象素处理依据该象素及其邻域内各象素的前一轮迭代处理的结果,至始至终采用相同的细化准则。

即全部检测完汉子图像边缘上的点后再删除可删除点。

1.1.2骨架对图像细化的过程实际上是求一图像骨架的过程。

骨架是二维二值目标的重要拓扑描述,它是指图像中央的骨架部分,是描述图像几何及拓扑性质的重要特征之一。

骨架形状描述的方法是Blum最先提出来的,他使用的是中轴的概念。

如果用一个形象的比喻来说明骨架的含义,那就是设想在t=0的时刻,讲目标的边界各处同时点燃,火焰以匀速向目标内部蔓延,当火焰的前沿相交时火焰熄灭,那么火焰熄灭点的集合就构成了中轴,也就是图像的骨架。

例如一个长方形的骨架是它的长方向上的中轴线,正方形的骨架是它的中心点,圆的骨架是它的圆心,直线的骨架是它自身,孤立点的骨架也是自身。

细化的目的就是在将图像的骨架提取出来的同时保持图像细小部分的连通性,特别是在文字识别,地质识别,工业零件识别或图像理解中,先对被处理的图像进行细化有助于突出形状特点和减少冗余信息量。

把一个平面区域简化成图(Graph )是一种重要的结构形状表示法。

利用细化技术得到区域的细化结构是常用的方法。

因此, 寻找二值图像的细化结构是图像处理的一个基本问题。

在图像识别或数据压缩时,经常要用到这样的细化结构,例如,在识别字符之前,往往要先对字符作细化处理,求出字符的细化结构。

骨架便是这样的一种细化结构,它是目标的重要拓扑描述,具有非常广泛的应用。

按照最大圆盘定义骨架的方式,在欧氏二值图像的内部任意给定一点,如果以该点为圆心存在一个最大圆盘,其整个盘体都在图像的内部, 且至少有两点与目标边界相切,则该点便是骨架上的点。

所有最大圆盘的圆心构成了图像的骨架(中轴)。

对于图像X ,一般用S(X)表示其骨架。

注意,不同的图像可能有相同的骨架。

骨架对噪声非常敏感,而且连通的集合可能具有不连通的骨架(例如两个相切圆盘的骨架)1.1.3 像素的八临域图1 八临域图如图1所示,图像中任意一个像素P 相邻的八个像素称为P 的八临域。

P 0, P 2, P 4,P 6 为P 的4-邻域 。

P 0 P 1 P 2 P 4 P 5 P 6 P 7为P 的8-邻域.若P 为黑点,P 0 P 1 P 2 P 4 P 5 P 6 P 7中只有一个黑点,则称P 为端点。

若3×3 窗口中只有P 为黑点,则称其为孤立点。

若P 为黑点且P 0, P 2, P 4,P 6仅有一个白点,则称P 为边缘点。

若P 为黑点,如删除其会破坏图像的连续性,则称P 为断点。

1.2细化算法的分类:依据是否使用迭代运算可以分为两类:第一类是非迭代算法,一次即产生骨架,如基于距离变换的方法。

游程长度编码细化等。

第二类是迭代算法,即重复删除图像边缘满足一定条件的像素,最终得到单像素宽带骨架。

迭代方法依据其检查像素的方法又可以再分成串行算法和并行算法,在串行算法中,是否删除像素在每次迭代的执行中是固定顺序的,它不仅取决于前次迭代的结果,也取决于本次迭代中已处理过像素点分布情况,而在并行算法中,像素点删除与否与像素值图像中的顺序无关,仅取决于前次迭代的结果。

在经典细化算法发展的同时,起源于图像集合运算的形态学细化算法也得到了快速的发展。

1.3几种经典细化算法的介绍Hilditch、Pavlidis、Rosenfeld细化算法:这类算法则是在程序中直接运算,根据运算结果来判定是否可以删除点的算法,差别在于不同算法的判定条件不同。

1.3.1经典Hilditch算法Hilditch算法使用于二值图像,是种经典的算法假设像素p的3×3邻域结构为:Hilditch 细化算法的步骤为:对图像从左向右从上向下迭代每个像素,是为一个迭代周期。

在每个迭代周期中,对于每一个像素p,如果它同时满足6个条件,则标记它。

在当前迭代周期结束时,则把所有标记的像素的值设为背景值。

如果某次迭代周期中不存在标记点(即满足6个条件的像素),则算法结束。

假设背景值为0,前景值为1,则:6个条件为:(I):p 为1,即p不是背景;(2):x1,x3,x5,x7不全部为1(否则把p标记删除,图像空心了);(3):x1-x8 中,至少有2个为1(若只有1个为1,则是线段的端点。

若没有为1的,则为孤立点);(4):p的8连通联结数为1;联结数指在像素p的3*3邻域中,和p连接的图形分量的个数:上图中,左图的4连通联结数是2,8连通联结数是1,而右图的4联通联结数和8联通联结数都是2。

4连通联结数计算公式是:8连通联结数计算公式是:其中(5)假设x3已经标记删除,那么当x3为0时,p的8联通联结数为1;(6)假设x5已经标记删除,那么当x5为0时,p的8联通联结数为1。

1.3.2 Pavlidis算法Pavlidis算法通过并行和串行混合处理来实现,用位运算进行特定模式的匹配,所得的骨架是8连接的,使用于0-1二值图像,Pavlidis与Hilditch算法较为相似。

1.3.3 Rosenfeld算法Rosenfeld算法是一种并行细化算法,所得的骨架形态是8-连接的,使用于0-1二值图像。

后两种算法的效果要更好一些,但是处理某些图像时效果一般,第一种算法使用性强些。

1.3.4 索引表细化算法索引表细化算法:经过预处理后得到待细化的图像是0、1二值图像。

像素值为1的是需要细化的部分,像素值为0的是背景区域。

基于索引表的算法就是依据一定的判断依据,所做出的一张表,然后根据要细化的点的八个邻域的情况查询,若表中元素是1,若表中元素是1,则删除该点(改为背景),若是0则保留。

因为一个像素的8个邻域共有256中可能情况,因此,索引表的大小一般为256。

1.3.5基于数学形态学的索引表细化算法数学形态学(Mathmatical Morphology)是分析几何形状和结构的数学方法,是建立在集合代数基础上,用集合论方法定量描述几何结构的科学。

形态学的用途主要是获取物体拓扑和结构信息,它通过物体和结构元素相互作用的某些运算,得到物体更本质的形态。

数学形态学现在已经成为一种应用于图像处理和模式识别领域的新方法。

下面的细化算法属于数学形态学范畴内的运算。

一种基于数学形态学的索引表表细化算法。

所谓“细化”就是从原来的图中去掉一些点,但仍要保持原来的形状。

实际上,是保持原图的骨架。

判断一个点是否能去掉,要根据它的八个邻域的情况来判断,下面给出几个例子说明:八邻域象素的各种情形说明:(1)不能删,因为它是个内部点,我们要求的是骨架,如果连内部点也删了,骨架也会被掏空的;(2)不能删,和(1)是同样的道理;(3)可以删,这样的点不是骨架;(4)不能删,因为删掉后,原来相连的部分断开了;(5)可以删,这样的点不是骨架;(6)不能删,因为它是直线的端点,如果这样的点删了,那么最后整个直线也被删了,剩不下什么;此外,孤立点也不能删,因为孤立点的骨架就是它自身。

总结一下,有如下的判据:(1)内部点不能删除;(2)孤立点不能删除;(3)直线端点不能删除;(4)如果P 是边界点,去掉P 后,如果连通分量不增加,则P 可以删除。

根据上述的判据,事先做出一张表,从0到255共有256个元素,每个元素要么是0,要么是1。

根据某点(要处理的黑色点)的八个相邻点的情况查表,若表中的元素是1,则表示该点可删,否则保留。

该细化算法的步骤如下:(1)按顺序根据8邻域值计算用于查表的索引值:765432102928272624232221⨯+⨯+⨯+⨯+⨯+⨯+⨯+⨯=P P P P P P P P S (9~1P P 分别为0或1),则有256种索引与数值0到255一一对应;(2)根据上述判据制作一张消除表,实际上是一个容量为256的数组,下标分别与象素的索引值一一对应,元素值设为0表示该组合的中心点应该保留,设为1则表示应该删除。

数组定义如下:static int erasetable[256]={0,0,1,1,0,0,1,1, 1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1, 0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1, 1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1, 0,0,0,0,0,0,0,1,1,1,0,0,1,1,0,0, 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0, 1,1,0,1,1,1,0,1,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1, 1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1, 0,0,0,0,0,0,0,1,0,0,1,1,0,0,1,1, 1,1,0,1,1,1,0,1,1,1,0,0,1,1,1,1, 0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0, 0,0,0,0,0,0,0,0,1,1,0,0,1,1,1,1, 0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0, 1,1,0,1,1,1,0,0,1,1,0,0,1,1,1,0, 1,1,0,0,1,0,0,0};(3)从上到下,从左到右,对二值图像进行扫描,对每一个黑点做如下处理:先判断该黑点的左右邻居,如果都是黑点,则该点不做处理:否则计算8邻域编码作为索引,查消除表看是否删除:如果该黑点被删除了,那么跳过它的右邻域,处理下一个点。

(4)从左到右,从上到下,对二值图像进行第二次扫描,对每一个黑点做类似处理:先判断该黑点的上下邻居,如果都是黑点,则该点不做处理;否则计算8邻域编码作为索引,查消除表看是否删除:如果该黑点被删除了,那么跳过它的下邻居,处理下一个点。

相关文档
最新文档