[计算机]并行图像细化算法和c代码实现

[计算机]并行图像细化算法和c代码实现

ID:23752282

大小:73.50 KB

页数:9页

时间:2018-11-10

[计算机]并行图像细化算法和c代码实现_第1页
[计算机]并行图像细化算法和c代码实现_第2页
[计算机]并行图像细化算法和c代码实现_第3页
[计算机]并行图像细化算法和c代码实现_第4页
[计算机]并行图像细化算法和c代码实现_第5页
资源描述:

《[计算机]并行图像细化算法和c代码实现》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、并行图像细化算法和C代码实现图像细化一般作为一种图像预处理技术出现,目的是提取源图像的骨架,即是将原图像中线条宽度大于1个象素的线条细化成只有一个象素宽,形成'骨架',形成骨架后能比较容易的分析图像,如提取图像的特征.细化分成串行细化和并行细化2中,串行细化即是一遍检测满足细化条件的点一边删除细化点,并行细化即是检测细化点的时候不进行点的删除只进行标记,而在检测完整幅图像后一次性去除要细化的点.细化基本思想是'层层剥夺',即从线条边缘开始一层一层向里剥夺,直到线条剩下一个象素的为止.进行细化算法前

2、要先对图像进行2值化,即图像中直包含'黑'和'白'2中颜色.细化算法:在微观上取检测点的8个临域(由于是并行细化,有些模板要扩展为12临域),如下xxxxoxxxx其中o为检测点x为其相邻点以下用1代表黑色点,用0代表白色点,用x代表任意颜色的点,要剥夺(删除)的点应满足一下8个模板中的一个.模板a(向右扩大)0x1x01110x1x模板b(向右扩大)00xx0111x11x模板c(向右扩大)x11x011100xx模板d111x1x000模板e1x01101x0模板fx00110x1x模板gx1

3、x110x00模板h(向下扩大)000x1x111x1x符合以上8个模板的点为要剥夺的点,因为符合这8个模板的点可以确认为线条边沿上的点.而试事实上经过这8个模板并行细化后还有下面2种特殊的边沿点保留了下来,特殊边沿点1000010111特殊边沿点2001011001造成这种2种特殊点的原因扩大后的模板a和扩大后的模板h,扩大的的本意是防止偶数列(行)的线条被完全消去(并行细化并然的).解决方法是在并行细化后再进行一次串行细化,选取缩小后的模板a和模板h模板a(缩小后)0x10110x1模板h(缩

4、小后)000x1x111其中缩小后的模板a解决了特殊情况1,缩小后的模板h解决了特殊情况2,注意这次是串行细化了.一下根据这个原理用C++Builder6.0实现,关键代码如下.//--------------------------------BCB6代码#include#pragmahdrstop#include#include"Unit1.h"#include"File1.h"#include#include#include

5、ector>#pragmapack(1)usingnamespacestd;/*程序:图像细化作者:sboom(Lingch)日期:05年1月18日*///BMP文件头structBITMAPFILEHEADER_{shorttype;intbfSize;shortre1,re2;intOffbits;};//BMP信息头structBITMAPINFO_{longsize;longwidth,height;shortplanes,bitCount;longcomp,sizeImg;longxpe

6、ls,ypels;longused,important;};//------将BMP彩色表的数据校正到BCB的TColor的数据。TColor*SwitchColor(unsignedcharr,unsignedcharg,unsignedcharb){TColor*re=newTColor;*re=(r

7、g<<8

8、b<<16);*re=*re&0x00ffffff;returnre;}voidxxx(){FILE*f=fopen("f:\1.bmp","rb");if(f==NULL)/*判断

9、文件是否打开成功*/{ShowMessage("Fileopenerror");return;}fseek(f,0,0);//移动到开头//----------读BMP文件头BITMAPFILEHEADER_*bmph=newBITMAPFILEHEADER_();if(fread((char*)bmph,sizeof(BITMAPFILEHEADER_),1,f)==NULL){ShowMessage("Filereaderror");return;}//-----------读BMP信息头BI

10、TMAPINFO_*bmpi=newBITMAPINFO_();if(fread((char*)bmpi,sizeof(BITMAPINFO_),1,f)==NULL){ShowMessage("Filereaderror2");return;}fseek(f,bmph->Offbits,0);//----------显示一些信息Form1->Edit1->Text=IntToStr(bmph->bfSize);Form1->Edit2->Text=IntToStr(bmpi->w

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。