版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、并行图像细化算法和 C 代码实现 图像细化一般作为一种图像预处理技术出现 ,目的是提取源图像的骨架 , 即是将原图像中线条 宽度大于 1 个象素的线条细化成只有一个象素宽 , 形成' 骨架 ', 形成骨架后能比较容易的分析 图像 ,如提取图像的特征 .细化分成串行细化和并行细化 2 中, 串行细化即是一遍检测满足细化条件的点一边删除细化 点, 并行细化即是检测细化点的时候不进行点的删除只进行标记,而在检测完整幅图像后一次性去除要细化的点 .细化基本思想是 ' 层层剥夺 ', 即从线条边缘开始一层一层向里剥夺 , 直到线条剩下一个象素的 为止 .进行细化算法前要先
2、对图像进行 2值化,即图像中直包含 ' 黑'和'白'2 中颜色.细化算法 :在微观上取检测点的 8 个临域 ( 由于是并行细化 , 有些模板要扩展为 12 临域 ), 如下 xxx xoxxxx其中 o 为检测点 x 为其相邻点以下用1代表黑色点,用0代表白色点,用x代表任意颜色的点,要剥夺(删除)的点应满足一下 8 个模板中的一个 .模板 a( 向右扩大 )0x1x01110x1x模板 b( 向右扩大 )00xx0111x11x模板 c( 向右扩大 )x11x011100xx模板 d111x1x000模板 e1x01101x0模板 fx00110x1x模板 g
3、x1x110x00模板 h( 向下扩大 )000x1x111x1x符合以上 8 个模板的点为要剥夺的点 , 因为符合这 8 个模板的点可以确认为线条边沿上的点而试事实上经过这 8个模板并行细化后还有下面 2 种特殊的边沿点保留了下来 , 特殊边沿点 1000010111 特殊边沿点 2001011001造成这种 2 种特殊点的原因扩大后的模板 a 和扩大后的模板 h, 扩大的的本意是防止偶数列 ( 行 ) 的线条被完全消去 ( 并行细化并然的 ).解决方法是在并行细化后再进行一次串行细化 , 选取缩小后的模板 a 和模板 h 模板 a( 缩小后 )0x10110x1模板 h( 缩小后 )000
4、x1x111其中缩小后的模板a解决了特殊情况1,缩小后的模板h解决了特殊情况2,注意这次是串行细 化了.一下根据这个原理用 C+Builder6.0 实现,关键代码如下 ./BCB6 代码#include <vcl.h>#pragma hdrstop#include<stdio.h>#include "Unit1.h" #include"File1.h"#include<math.h>#include<time.h>#include<vector>#pragma pack(1) using na
5、mespace 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的数据。TColo
6、r* SwitchColor(unsigned char r,unsigned char g,unsigned char b) TColor *re=new TColor;*re=(r | g<<8 | b<<16 );*re=*re & 0x00ffffff; return re;void xxx()FILE *f=fopen("f:1.bmp","rb"); if(f=NULL) /* 判断文件是否打开成功 */ ShowMessage("File open error"); return;fsee
7、k(f,0,0);/ 移动到开头/ 读BMP文件头BITMAPFILEHEADER_ *bmph=new BITMAPFILEHEADER_(); if(fread(char*)bmph,sizeof(BITMAPFILEHEADER_),1,f)=NULL) ShowMessage("File read error");return; / 读BMP信息头BITMAPINFO_ *bmpi=new BITMAPINFO_(); if(fread(char*)bmpi,sizeof(BITMAPINFO_),1,f)=NULL) ShowMessage("File
8、read error2"); return; fseek(f,bmph->Offbits,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=IntToSt
9、r(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;i<N;i+)
10、if(unsigned char)imagei<0xa0) imagei=(unsigned char)0;else imagei=(unsigned char)0xff;/int flag=1;long x,b;标记矩阵unsigned char *om=new unsigned charN; / for(i=0;i<N;i+) / 初始化 omi=0;while(flag=1) /flag=0时迭代结束flag=0;for( i=2;i<bmpi->height-2;i+) for(j=2;j<bmpi->width-2;j+) / 模板 a if(im
11、age(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 && imag
12、e(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&& i
13、mage(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(imag
14、e(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
15、)*(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&& imag
16、e(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-
17、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
18、+skip)+j=0xff;flag=1;continue;/ 模板 fif(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
19、->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
20、->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-
21、>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;i<N;i+)if(om
22、i=0xff)imagei=0xff;/ 第二次串行细化for( i=2;i<bmpi->height-2;i+)for(j=2;j<bmpi->width-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)*(bm
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026中国生物医药行业政策环境与商业化路径战略研究报告
- 2026中国医疗器械检验检测机构行业市场竞争分析报告
- 2026叶黄素酯在运动营养品市场的增长潜力与产品创新
- 2026中国医疗用激光设备行业市场现状供需分析及投资评估规划分析研究报告
- 2026中国物联网产业链全景分析及市场应用前景预测与投资战略建议报告
- 2026中国涡流泵产品创新与智能化升级路径分析报告
- 2026中国叶黄素酯行业景气指数构建与预测模型报告
- 2026中国五金行业市场发展分析及市场创新与投资前景研究报告
- 2026中国新材料碳纳米管应用市场现状竞争格局发展策略规划报告
- 2026中国印刷包装行业市场竞争态势与发展潜力研究
- 食堂食材供货、配送服务保障方案
- 护患沟通人文关怀课件
- 高磷血症科普
- 设备管理技术培训课件
- 管道焊接专项施工计划
- 集装箱活动板房施工方案
- 一体化消防泵房水池施工方案
- 脊柱骨折的急救处理措施
- 中国2型糖尿病运动治疗指南(2024版)
- CJ/T 283-2017偏心半球阀
- 2026届高中语文一轮复习板块五 文言文阅读 考点突破学案27 理解文言实词(一)-词分古今义究源流 (共107张) +学案+练习(含解析)
评论
0/150
提交评论