关于图象识别(问题1)(100分)

  • 主题发起人 主题发起人 star.yu
  • 开始时间 开始时间
S

star.yu

Unregistered / Unconfirmed
GUEST, unregistred user!
现在,大家看到了,计算机的智能化技术在迅速崛起,其实智能化技术,无非就是计算机
能听的懂人说的,看的懂人写的,识别的出取象部分给自己的信号,再可以给出合适的反应
,并可以学习就可以了。
而,识别取象部分给自己的信号,这一部分我认为应该是最难得,虽然,扫描技术,车牌识
别,细胞图识别,有些公司已经作的比较成熟了,但这仅是在特定环境下的技术。
我现在从最基本的问题开始:
一副位图,经过二值化,接下来细化,求细化的算法!
俺知道,许多大富翁已经作过这方面的东西,希望能给予赐教,或者如果技术保密,告诉
几本相关书籍(最好网上能下的),俺也非常感谢。
(100分。这个问题实际不难)
 
看过腐蚀没?
科学出版社
图形图像充数.
100分give me.
 
这书我在网上找了n遍都找不到,还不知道这书适不适合我的情况呢?
 
麻烦您最好讲讲您为什么这样建议,
要不然我直接去网上搜索,一大堆书名都出来了,何必在这里求助。
 
对,我不知道
 
网上没有下的。
全,系,对入门有好处,通属易懂。还带有部分源代码,适合急工净利的人.
要自己掏money.
想不想学?想学还怕花钱?
 
给你介绍一本相关书:
(我不是在做广告:-))
《图像处理与分析-数学形态学方法及应用》崔屹编著,科学出版社出版
该书特点:
书不厚不到200页,短小精悍
该书详细介绍了各种形态学方面的算法有简单例程
(附软盘一张)
其中有关于细化 修剪及骨架抽取等多种常用形态学算法
 
还是从基本的开始看比较好,矩阵论,泛函,然后再看数字信号处理,图形论等有关
书籍.再针对一些图形处理方面的书籍做出适合自己的算法.这样,可能更有意义.
 
给我E_Mail

cqchengyu@21cn.com
一起研究
 
找一幅BMP图像,象素值只为0和255:

var
bmp:tbitmap;
i,j:integer;
o,t,c,b:PRGBARRAY;
nb:array[1..3,1..3] of integer;
c1,c2,c3,c4,modified:boolean;
ncount:integer;
begin
modified:=true;
bmp:=tbitmap.Create;
bmp.Width :=image1.Width ;
bmp.Height :=image1.Height ;

while (modified) do
begin
modified:=false;
bmp.Assign(image1.Picture.Bitmap);

for i:=1 to bmp.Height-2 do
begin
o:=image1.Picture.Bitmap.ScanLine;
t:=bmp.ScanLine[i-1];
c:=bmp.ScanLine;
b:=bmp.ScanLine[i+1];
for j:=1 to bmp.width-2 do
begin

c1:=false;
c2:=false;
c3:=false;
c4:=false;

nb[1,1]:=t[j-1].rgbtRed div 255;
nb[1,2]:=t[j].rgbtRed div 255;
nb[1,3]:=t[j+1].rgbtRed div 255;

nb[2,1]:=c[j-1].rgbtRed div 255;
nb[2,2]:=c[j].rgbtRed div 255;
nb[2,3]:=c[j+1].rgbtRed div 255;

nb[3,1]:=b[j-1].rgbtRed div 255;
nb[3,2]:=b[j].rgbtRed div 255;
nb[3,3]:=b[j+1].rgbtRed div 255;

//判断2<=N[p]<=6
ncount:=nb[1,1]+nb[1,2]+nb[1,3]+
nb[2,1]+ nb[2,3]+
nb[3,1]+nb[3,2]+nb[3,3];
if (ncount>=2) and (ncount<=6) then c1:=true;
//判断T[p]
ncount:=0;
if(nb[1,1]=0)and(nb[1,2]=1) then inc(ncount);
if(nb[1,2]=0)and(nb[1,3]=1) then inc(ncount);
if(nb[1,3]=0)and(nb[2,3]=1) then inc(ncount);
if(nb[2,3]=0)and(nb[3,3]=1) then inc(ncount);
if(nb[3,3]=0)and(nb[3,2]=1) then inc(ncount);
if(nb[3,2]=0)and(nb[3,1]=1) then inc(ncount);
if(nb[3,1]=0)and(nb[2,1]=1) then inc(ncount);
if(nb[2,1]=0)and(nb[1,1]=1) then inc(ncount);

if ncount=1 then c2:=true;

//判断pn*ps*pe
if (nb[1,2]*nb[3,2]*nb[2,3]=0) then c3:=true;
//判断pw*pe*ps
if (nb[2,1]*nb[2,3]*nb[3,2]=0) then c4:=true;

if (c1 and c2 and c3 and c4) then
begin
o[j].rgbtRed:=255;
o[j].rgbtGreen:=255;
o[j].rgbtBlue :=255;
modified:=true;
end;
end;
end;
image1.Refresh;
end;
end;
 
前几天 我无聊 写过细化的 程序
不知放哪里了 :(
也不知道 叫什么算法了,

主要的思想: 判断待定点 X 是否为端点 不是 则清除

从四个方向一判断 待定点 要对称判断, 比如先 东,西 再 南 ,北



 
多人接受答案了。
 

Similar threads

D
回复
0
查看
928
DelphiTeacher的专栏
D
D
回复
0
查看
883
DelphiTeacher的专栏
D
D
回复
0
查看
856
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部