一张图片上有几个几何图形(总共有10种),如何确定某个特定图形的位置?分数不是问题 (250分)

  • 主题发起人 主题发起人 heipi2003
  • 开始时间 开始时间
H

heipi2003

Unregistered / Unconfirmed
GUEST, unregistred user!
应该牵涉到图形识别,会者不难吧~我是一点都不懂!

一张图片上有几个几何图形(总共有10种),这些图形都固定,但未必十分规则
如何判断某个小图形在大图形上的位置呢?
如何建立特征库?建立了之后怎么用

找到一小段代码找边缘,查找边缘后怎么办
能提供启发思路的源码也可以yhk15@263.net
 
怪有意思,小弟想知道,帮您提前啦!
 
把每种图形的数据信息保存起来,如直线的起点和终点坐标
在点击鼠标时,检查点击的坐标是否在这两点之间就可以了。
 
关键就是我不太明白,查找边缘的代码也不太好
能给也行,得到边缘后是否就得到了一些线段?这些线入库?
 
能不能先算出各各图形的重心,然后用重心到定点的距离为参照,再把大小两个参照相减得到两图相对位置,再算绝对位置。
 
晕,不得要领啊,怎么算重心呢?
给段代码测试通过就行
 
学习,帮你顶。
 
找到一片好文章与大家共勉
http://www.21ic.com/info/images/aet/200001/1-6.htm

关于车牌识别的,不过看不懂
 
图形固定,未必规则是什么意思?
是说圆形未必象圆??有偏差???
 
是啊是啊,就是这个意思,可能是个椭圆里面有一道杠
这个好像没关系的吧
 
“这些图形都固定,但未必十分规则”?
具体的规则是什么?例如:是不是都在同一个水平线上?宽度、高度是不是都一样?
有没有旋转的情形?有没有重叠的情形?
10种,我猜应该是0123456789吧。根据你这10个图形的具体特征才好处理。变成黑白2种颜色后就好处理了。
 
若是图形,需转换成对应的线条,如直线,三角等,在由组合的相对位置和比列判断
 
to:skadon:
颜色全部为黑白,没有旋转、没有重叠
不是数字,谢谢。车牌识别需要识别汉字这个不需要的。
比如有一个图形是叉子形状的
不是都在同一个水平线上!宽度、高度是不是都一样!
to:ghg_qh
如何转换成三角形、直线呢?

问:查找边缘后能得到什么数据,如何利用这些数据?
如何查找边缘?如果能解决可另外加分。
谢谢关注!
 
大小比例是否固定?
我想边缘提取的作用并不大,可以将标准的图形作为模板,然后那模板在目标图像上遍历,分别求模板与图像上某块区域的互相关系数,互相关系数越大表明两个图像的相似程度越大。
如果比例不固定,要通过某些算法取的一个标准模板,比较的时候要将模板放大一定比例分别比较,对于二值图像来说,精度应该是可以达到的
基于模板的人脸识别用的就是这个原理
 
to:zplinze
想的和你一样,但是不知道怎么操作。
图像的大小固定。如何让模板在目标图片上进行遍历呢,很玄乎啊
如何求模板与图像上某块区域的互相关系数?呵呵,一头雾水哦

想早点把这个题目结了,谁能实现如上想法并写出简单代码,马上给分
万分感谢!
 
看这样行不行?把模板和图像转化成黑白
模板每个点就能转换成
比如3×3的点,那么它就形成一个
000
111
010
1为黑色,一共9个点。目标图形如果是8×8,那就从6×6的范围移动
每个点都计算一次3×3范围的数组,切合度80%(7个点)以上考虑为有效位置,
嗯...我试试看这样行不行
var
Bmp: TBitmap;
begin
Bmp:=TBitmap.Create;
Bmp.Canvas.Pixels[x,y];
ColorToRGB
BITMAPFILEHEADER
BITMAPINFOHEADER
用scanline啊,比如bmp的反色:
procedure TForm1.anticolorClick(Sender: TObject);
var
p :PByteArray;
x,y :Integer;
Bmp :TBitmap;
begin
Bmp :=TBitmap.Create;
Bmp.Assign(Image1.Picture.Bitmap);
Bmp.PixelFormat :=pf24Bit;
for y:=0 to Bmp.Height-1 do
begin
p:=Bmp.scanline[y];
for x:=0 to Bmp.Width-1 do
begin
// Gray:=Round(p[x*3+2]*0.3+p[x*3+1]*0.59+p[x*3]*0.11);
p[x*3]:=not p[x*3];
p[x*3+1]:=not p[x*3+1];
p[x*3+2]:=not p[x*3+2];
end;
end;
Image1.Picture.Bitmap.Assign(Bmp);
Bmp.Free;
end;
 
对图形的具体特征不是很清楚,不能得出具体的思路,能不能给一个样图?
1、图形重叠问题:因为是不规则图形,取最宽最高应该是一个矩形,总共有10个矩形,这10个矩形有没有重叠?
2、边沿问题:不管图形内部如何,其边沿是不是一个闭合的曲线?
3、图形相切问题:图形和图形之间的边线相连接吗?如果有距离,最短水平或垂直距离有几个像素?
4、全图大小?10个图形大小(指矩形)?

如果满足一下任一条件,可以逐个分离并取出小图形:
1、矩形不重叠,边沿不要求是闭合曲线。
2、矩形可以重叠,但是边沿是闭合曲线,且相邻图形的曲线的水平和垂直距离距离至少间隔了一个像素。
 
按照象素点来算比例肯定不行,因为我跑一个20×20的小图对应一个90×300的大图的相对位置
整整跑了10分多种,16副图跑完得要160分钟啊!晕倒~

to:skadon:
有的边缘闭合有的不闭合,请留信箱我发几个样图给你,多谢
 
skadon@21cn.com
 
多谢大家的配合,问题自己已经搞定了
to:skadon
不用发了,马上给分
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
637
import
I
后退
顶部