并行图像细化算法和C代码实现.doc

上传人:wux****ua 文档编号:8673418 上传时间:2020-03-30 格式:DOC 页数:9 大小:38.50KB
返回 下载 相关 举报
并行图像细化算法和C代码实现.doc_第1页
第1页 / 共9页
并行图像细化算法和C代码实现.doc_第2页
第2页 / 共9页
并行图像细化算法和C代码实现.doc_第3页
第3页 / 共9页
点击查看更多>>
资源描述
并行图像细化算法和C代码实现图像细化一般作为一种图像预处理技术出现,目的是提取源图像的骨架,即是将原图像中线条宽度大于1个象素的线条细化成只有一个象素宽,形成骨架,形成骨架后能比较容易的分析图像,如提取图像的特征.细化分成串行细化和并行细化2中,串行细化即是一遍检测满足细化条件的点一边删除细化点,并行细化即是检测细化点的时候不进行点的删除只进行标记,而在检测完整幅图像后一次性去除要细化的点.细化基本思想是层层剥夺,即从线条边缘开始一层一层向里剥夺,直到线条剩下一个象素的为止.进行细化算法前要先对图像进行2值化,即图像中直包含黑和白2中颜色.细化算法:在微观上取检测点的8个临域(由于是并行细化,有些模板要扩展为12临域),如下xxxxoxxxx其中o为检测点x为其相邻点以下用1代表黑色点,用0代表白色点,用x代表任意颜色的点,要剥夺(删除)的点应满足一下8个模板中的一个.模板a(向右扩大)0x1x01110x1x模板b(向右扩大)00xx0111x11x模板c(向右扩大)x11x011100xx模板d111x1x000模板e1x01101x0模板fx00110x1x模板gx1x110x00模板h(向下扩大)000x1x111x1x符合以上8个模板的点为要剥夺的点,因为符合这8个模板的点可以确认为线条边沿上的点.而试事实上经过这8个模板并行细化后还有下面2种特殊的边沿点保留了下来,特殊边沿点1000010111特殊边沿点2001011001造成这种2种特殊点的原因扩大后的模板a和扩大后的模板h,扩大的的本意是防止偶数列(行)的线条被完全消去(并行细化并然的).解决方法是在并行细化后再进行一次串行细化,选取缩小后的模板a和模板h模板a(缩小后)0x10110x1模板h(缩小后)000x1x111其中缩小后的模板a解决了特殊情况1,缩小后的模板h解决了特殊情况2,注意这次是串行细化了.一下根据这个原理用C+Builder6.0实现,关键代码如下./-BCB6 代码#include #pragma hdrstop#include#include Unit1.h#includeFile1.h#include#include#include#pragma pack(1)using namespace std;/* 程序:图像细化 作者:sboom(Lingch) 日期:05年1月18日*/BMP文件头struct BITMAPFILEHEADER_ short type; int bfSize; short re1,re2; int Offbits;/BMP信息头struct BITMAPINFO_ long size; long width,height; short planes,bitCount; long comp,sizeImg; long xpels,ypels; long used,important;/-将BMP彩色表的数据校正到BCB 的TColor的数据。TColor* SwitchColor(unsigned char r,unsigned char g,unsigned char b) TColor *re=new TColor; *re=(r | g8 | bOffbits,0); /-显示一些信息 Form1-Edit1-Text=IntToStr(bmph-bfSize); Form1-Edit2-Text=IntToStr(bmpi-width); Form1-Edit3-Text=IntToStr(bmpi-height); Form1-Edit4-Text=IntToStr(bmpi-comp); Form1-Edit5-Text=IntToStr(bmpi-used); int i,j,k,l,wc,pos; long N=bmph-bfSize- bmph-Offbits;/象素总数 unsigned char *image=new unsigned charN; /位图矩阵 fread(image,N,1,f);/读入位图矩阵 int skip=0; /BMP 文件4字节对齐 if(bmpi-width%4=0) skip=0; else skip=4-bmpi-width%4; unsigned char color=0; TColor *tc; /! /2值化 for(i=0;iN;i+) if(unsigned char)imagei0xa0) imagei=(unsigned char)0; else imagei=(unsigned char)0xff; / int flag=1; long x,b; unsigned char *om=new unsigned charN; /标记矩阵 for(i=0;iN;i+) /初始化 omi=0; while(flag=1) /flag=0时迭代结束 flag=0; for( i=2;iheight-2;i+) for(j=2;jwidth-2;j+) /模板a if(image(i-1)*(bmpi-width+skip)+j-1=0xff & image(i-1)*(bmpi-width+skip)+j+1=0 & image(i)*(bmpi-width+skip)+j-1=0xff & image(i)*(bmpi-width+skip)+j-0=0 & image(i)*(bmpi-width+skip)+j+1=0 & image(i)*(bmpi-width+skip)+j+2=0 & image(i+1)*(bmpi-width+skip)+j-1=0xff & image(i+1)*(bmpi-width+skip)+j+1=0) om(i)*(bmpi-width+skip)+j=0xff; flag=1; continue; /模板b if(image(i-1)*(bmpi-width+skip)+j-0=0 & image(i-1)*(bmpi-width+skip)+j+1=0 & image(i)*(bmpi-width+skip)+j-1=0xff & image(i)*(bmpi-width+skip)+j-0=0 & image(i)*(bmpi-width+skip)+j+1=0 & image(i)*(bmpi-width+skip)+j+2=0 & image(i+1)*(bmpi-width+skip)+j-1=0xff & image(i+1)*(bmpi-width+skip)+j-0=0xff) om(i)*(bmpi-width+skip)+j=0xff; flag=1; continue; /模板c if(image(i-1)*(bmpi-width+skip)+j-1=0xff & image(i-1)*(bmpi-width+skip)+j-0=0xff & image(i)*(bmpi-width+skip)+j-1=0xff & image(i)*(bmpi-width+skip)+j-0=0 & image(i)*(bmpi-width+skip)+j+1=0 & image(i)*(bmpi-width+skip)+j+2=0 & image(i+1)*(bmpi-width+skip)+j-0=0 & image(i+1)*(bmpi-width+skip)+j+1=0) om(i)*(bmpi-width+skip)+j=0xff; flag=1; continue; /模板d if(image(i-1)*(bmpi-width+skip)+j-1=0xff & image(i-1)*(bmpi-width+skip)+j-0=0xff & image(i-1)*(bmpi-width+skip)+j+1=0xff & image(i)*(bmpi-width+skip)+j-0=0 & image(i+1)*(bmpi-width+skip)+j-1=0 & image(i+1)*(bmpi-width+skip)+j-0=0 & image(i+1)*(bmpi-width+skip)+j+1=0) om(i)*(bmpi-width+skip)+j=0xff; flag=1; continue; /模板e if(image(i-1)*(bmpi-width+skip)+j-1=0 & image(i-1)*(bmpi-width+skip)+j+1=0xff & image(i)*(bmpi-width+skip)+j-1=0 & image(i)*(bmpi-width+skip)+j-0=0 & image(i)*(bmpi-width+skip)+j+1=0xff & image(i+1)*(bmpi-width+skip)+j-1=0 & image(i+1)*(bmpi-width+skip)+j+1=0xff) om(i)*(bmpi-width+skip)+j=0xff; flag=1; continue; /模板f if(image(i-1)*(bmpi-width+skip)+j-0=0 & image(i)*(bmpi-width+skip)+j-1=0 & image(i)*(bmpi-width+skip)+j-0=0 & image(i)*(bmpi-width+skip)+j+1=0xff & image(i+1)*(bmpi-width+skip)+j-0=0xff & image(i+1)*(bmpi-width+skip)+j+1=0xff) om(i)*(bmpi-width+skip)+j=0xff; flag=1; continue; /模板g if(image(i-1)*(bmpi-width+skip)+j-0=0xff & image(i-1)*(bmpi-width+skip)+j+1=0xff & image(i)*(bmpi-width+skip)+j-1=0 & image(i)*(bmpi-width+skip)+j-0=0 & image(i)*(bmpi-width+skip)+j+1=0xff & image(i+1)*(bmpi-width+skip)+j-0=0) om(i)*(bmpi-width+skip)+j=0xff; flag=1; continue; /模板h if(image(i-2)*(bmpi-width+skip)+j-0=0 & image(i-1)*(bmpi-width+skip)+j-1=0 & image(i-1)*(bmpi-width+skip)+j-0=0 & image(i-1)*(bmpi-width+skip)+j+1=0 & image(i)*(bmpi-width+skip)+j-0=0 & image(i+1)*(bmpi-width+skip)+j-1=0xff & image(i+1)*(bmpi-width+skip)+j-0=0xff & image(i+1)*(bmpi-width+skip)+j+1=0xff) om(i)*(bmpi-width+skip)+j=0xff; flag=1; continue; for(i=0;iN;i+) if(omi=0xff) imagei=0xff; /-第二次串行细化 for( i=2;iheight-2;i+) for(j=2;jwidth-2;j+) /缩小后的模板a if(image(i-1)*(bmpi-width+skip)+j-1=0xff & image(i-1)*(bmpi-width+skip)+j+1=0 & image(i)*(bmpi-width+skip)+j-1=0xff & image(i)*(bmpi-width+skip)+j-0=0 & image(i)*(bmpi-width+skip)+j+1=0 & image(i+1)*(bmpi-width+skip)+j-1=0xff & image(i+1)*(bmpi-width+skip)+j+1=0) image(i)*(bmpi-width+skip)+j=0xff; flag=1; continue; /缩小后的模板h if(image(i-1)*(bmpi-width+skip)+j-1=0 & image(i-1)*(bmpi-width+skip)+j-0=0 & image(i-1)*(bmpi-width+skip)+j+1=0 & image(i)*(bmpi-width+skip)+j-0=0 & image(i+1)*(bmpi-width+skip)+j-1=0xff & image(i+1)*(bmpi-width+skip)+j-0=0xff & image(i+1)*(bmpi-width+skip)+j+1=0xff) image(i)*(bmpi-width+skip)+j=0xff; flag=1; continue; /-显示图形 for( i=0;iheight;i+) for(j=0;jwidth;j+) /-原始图形 color=image(i)*(bmpi-width+skip)+j; tc=SwitchColor(color,color,color); Form1-Canvas-Pixels10+j400-i=*tc; /-关闭文件 fclose(f);/-原图和细化效果图对比 细化是常用的图像预处理技术,目前也有很多图像细化算法,细化后能更好的分析图像,现在很多图像的特征提取,特征分析算法是基于细化后的图像的.
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 大学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!