資源簡介
Hilditch細化算法
Pavlidis細化算法
Rosenfeld細化算法
索引表細化算法

代碼片段和文件信息
//**************************************************************************
//Thinner.cpp
//細化算法實現(xiàn)文件
//**************************************************************************
#include?“StdAfx.h“
#include?
#include?
#include?“Thinner.h“
void?beforethin(unsigned?char?*ip?unsigned?char?*jp?
unsigned?long?lx?unsigned?long?ly)
{
unsigned?long?ij;
for(i=0;?i {
for(j=0;?j {
//這里要視前景是白點還是黑點而定,可以改動
//如果前景是白點,就是這樣;反之反過來
if(ip[i*lx+j]>0)
jp[i*lx+j]=1;
else
jp[i*lx+j]=0;
}
}
}
/////////////////////////////////////////////////////////////////////////
//Hilditch細化算法
//功能:對圖象進行細化
//參數(shù):image:代表圖象的一維數(shù)組
//??????lx:圖象寬度
//??????ly:圖象高度
//??????無返回值
void?ThinnerHilditch(void?*image?unsigned?long?lx?unsigned?long?ly)
{
char?*f?*g;
char?n[10];
unsigned?int?counter;
short?k?shori?xx?nrn;
unsigned?long?i?j;
long?kk?kk11?kk12?kk13?kk21?kk22?kk23?kk31?kk32?kk33?size;
size?=?(long)lx?*?(long)ly;
g?=?(char?*)malloc(size);
if(g?==?NULL)
{
printf(“error?in?allocating?memory!\n“);
return;
}
f?=?(char?*)image;
for(i=0;?i {
for(j=0;?j {
kk=i*ly+j;
if(f[kk]!=0)
{
f[kk]=1;
g[kk]=f[kk];
}
}
}
counter?=?1;
do
{
printf(“%4d*“counter);
counter++;
shori?=?0;
for(i=0;?i {
for(j=0;?j {
kk?=?i*ly+j;
if(f[kk]<0)
f[kk]?=?0;
g[kk]=?f[kk];
}
}
for(i=1;?i {
for(j=1;?j {
kk=i*ly+j;
if(f[kk]!=1)
continue;
kk11?=?(i-1)*ly+j-1;
kk12?=?kk11?+?1;
kk13?=?kk12?+?1;
kk21?=?i*ly+j-1;
kk22?=?kk21?+?1;
kk23?=?kk22?+?1;
kk31?=?(i+1)*ly+j-1;
kk32?=?kk31?+?1;
kk33?=?kk32?+?1;
if((g[kk12]&&g[kk21]&&g[kk23]&&g[kk32])!=0)
continue;
nrn?=?g[kk11]?+?g[kk12]?+?g[kk13]?+?g[kk21]?+?g[kk23]?+?
g[kk31]?+?g[kk32]?+?g[kk33];
if(nrn?<=?1)
{
f[kk22]?=?2;
continue;
}
n[4]?=?f[kk11];
n[3]?=?f[kk12];
n[2]?=?f[kk13];
n[5]?=?f[kk21];
n[1]?=?f[kk23];
n[6]?=?f[kk31];
n[7]?=?f[kk32];
n[8]?=?f[kk33];
n[9]?=?n[1];
xx?=?0;
for(k=1;?k<8;?k=k+2)
{
if((!n[k])&&(n[k+1]||n[k+2]))
xx++;
}
if(xx!=1)
{
f[kk22]?=?2;
continue;
}
if(f[kk12]?==?-1)
{
f[kk12]?=?0;
n[3]?=?0;
xx?=?0;
for(k=1;?k<8;?k=k+2)
{
if((!n[k])&&(n[k+1]||n[k+2]))
xx++;
}
if(xx?!=?1)
{
f[kk12]?=?-1;
continue;
}
f[kk12]?=?-1;
n[3]?=?-1;
}
if(f[kk21]!=-1)
{
f[kk22]?=?-1;
shori?=?1;
continue;
}
f[kk21]?=?0;
n[5]?=?0;
xx?=?0;
for(k=1;?k<8;?k=k+2)
{
if((!n[k])&&(n[k+1]||n[k+2]))
{
xx++;
}
}
if(xx?==
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
????.......?????13805??2002-10-06?10:22??248850四種不同的圖像細化算法\Thinner.cpp
????.......???????634??2002-10-06?09:44??248850四種不同的圖像細化算法\Thinner.h
?????文件???????3413??2009-09-08?17:39??248850四種不同的圖像細化算法\Thinner.dsp
?????文件??????33792??2009-09-08?17:39??248850四種不同的圖像細化算法\Debug\vc60.idb
?????文件??????28672??2009-09-08?17:39??248850四種不同的圖像細化算法\Debug\vc60.pdb
?????文件??????41984??2009-09-08?22:00??248850四種不同的圖像細化算法\Thinner.ncb
?????文件???????1393??2009-09-08?17:39??248850四種不同的圖像細化算法\Thinner.plg
?????文件????????539??2009-09-08?19:26??248850四種不同的圖像細化算法\Thinner.dsw
?????文件??????53760??2009-09-08?22:00??248850四種不同的圖像細化算法\Thinner.opt
?????目錄??????????0??2009-09-08?17:39??248850四種不同的圖像細化算法\Debug
?????目錄??????????0??2009-09-08?17:18??248850四種不同的圖像細化算法
-----------?---------??----------?-----??----
???????????????177992????????????????????11
- 上一篇:BootStrap3.37
- 下一篇:決策樹的R語言實現(xiàn)
評論
共有 條評論