首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

实心矩形图像识别有关问题,期待!

2012-12-20 
实心矩形图像识别问题,期待!!!大家好,我想在图像中找到一个矩形的位置,矩形是黑色实心的。图像是白纸黑字扫

实心矩形图像识别问题,期待!!!
大家好,我想在图像中找到一个矩形的位置,矩形是黑色实心的。图像是白纸黑字扫描成的。角度无法固定。
请问,无论何种角度扫描,我怎么找到矩形的位置。包括矩形的长宽,对角线坐标,越详细越好!!

[解决办法]
图上除了“黑色实心的矩形”还有什么?
[解决办法]
贴张图出来看看
[解决办法]
楼主去年的帖子还没结呢.

你要的是机器视觉,这一课题不是很简单,类似以前我见过的一套PCB自动抄板软件,卖价15W.

只需要给出一张无元件的单或双面PCB正反面的照片,它会自动生成PRETOL99的PCB图格式,很牛的.

具体原理没有研究过,帮顶吧.
[解决办法]
  楼主想得太简单了.
[解决办法]

由于已知仅有一个矩形,问题没有“人工视觉”那么复杂。

逐行扫描,将结果分为两种情况。

1 矩形是水平的。此情况下,每行黑色点的起始坐标相同。取得起始 X 坐标、起始 Y 坐标、终止 X 坐标、终止 Y 坐标,就可以得到四角坐标。

2 矩形是倾斜的。这样每行的 X 起始坐标会不同。此情况下只要取得最高点、最低点、最左点,最右点坐标,就是矩形的 4 个顶点。剩下的都是简单的解析几何计算。

需要考虑的是,扫描中的近似处理。因为扫描所得的点,与数学理想的点会有误差。

[解决办法]


图像如上:
我是教师,想做个用数码技术识别机读卡的软件。我想检测出边框四条直线的方程,
我用hough变换检测出来很慢,没有多大的使用价值!
[解决办法]
Option Explicit
  Private Declare Function GetPixel Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long) As Long
    
  Const Pi = 3.14159265358979
  Private Type Myline
      topx   As Integer
      topy   As Integer
      botx   As Integer
      boty   As Integer
  End Type
    
    
  Private Sub Command1_Click()
  Dim bmWidth     As Long
  Dim bmHeight     As Long
  Dim Dc     As Long
  Dim MaxLength     As Long, Alpha       As Integer
  Dim i     As Long, j       As Long, m       As Long, Length       As Long
  Dim IpMyLine()     As Myline, lpDistAlpha()       As Long, maxd       As Long
  Dim MaxdLine     As Myline, secondmaxd       As Myline, midvalue()       As Long
    
  bmWidth = Picture1.Width / Screen.TwipsPerPixelX
  bmHeight = Picture1.Height / Screen.TwipsPerPixelY
  Dc = Picture1.hdc
    
  MaxLength = CLng(Sqr(bmWidth * bmWidth + bmHeight * bmHeight) + 0.5)
    
  Alpha = 180
  ReDim IpMyLine(MaxLength * Alpha) As Myline
  ReDim lpDistAlpha(0 To MaxLength * Alpha) As Long


  ReDim midvalue(MaxLength * Alpha) As Long
    
  For i = 1 To MaxLength * Alpha
          IpMyLine(i).boty = 32767         '初始化最低点的y坐标为一个很大的值
  Next
    
  For i = 1 To bmHeight
          For j = 1 To bmWidth
                  'If   iDATA(1,   j,   i)   =   0   Then         '是个黑点
                  If GetPixel(Dc, j, i) = vbBlack Then
                        For m = 0 To 179
                                Length = CLng(Abs(j * Cos(m * Pi / 180) + i * Sin(m * Pi / 180)))                                       'i,j点的s值随角度变换
                                lpDistAlpha(Length * Alpha + m) = lpDistAlpha(Length * Alpha + m) + 1                                 '乘ALPHA=90是因为每次都要加m/2
                                If i > IpMyLine(Length * Alpha + m).topy Or j > IpMyLine(Length * Alpha + m).topx Then
                                    IpMyLine(Length * Alpha + m).topx = j
                                    IpMyLine(Length * Alpha + m).topy = i
    End If
    If i < IpMyLine(Length * Alpha + m).boty Or j < IpMyLine(Length * Alpha + m).topx Then
                                    IpMyLine(Length * Alpha + m).botx = j
                                    IpMyLine(Length * Alpha + m).boty = i


    End If

                    Next
                    End If
                  Next
          Next
            maxd = 0
                For i = 1 To MaxLength * Alpha
                        If lpDistAlpha(i) >= maxd Then
                              maxd = lpDistAlpha(i)
                              MaxdLine.topx = IpMyLine(i).topx
                              MaxdLine.topy = IpMyLine(i).topy
                              MaxdLine.botx = IpMyLine(i).botx
                              MaxdLine.boty = IpMyLine(i).boty
                          End If
            Next
            MsgBox MaxdLine.topx & "  " & MaxdLine.topy & "  " & MaxdLine.botx & "   " & MaxdLine.boty
  Picture1.Line (MaxdLine.topx * Screen.TwipsPerPixelX, MaxdLine.topy * Screen.TwipsPerPixelY)-(MaxdLine.botx * Screen.TwipsPerPixelX, MaxdLine.boty * Screen.TwipsPerPixelY), vbRed

  End Sub

————————————————————————————————————
以上是源码,速度太慢。
[解决办法]
创科公司开发出新一代图像识别开发平台CkVision4.5,该平台集成BLOB分析,对象计数、几何匹配、灰度匹配、字符识别、条码识别、测圆、卡尺测量、外经内经测量、颜色识别、图像基本运算(二值化、比例变换、开运算、闭运算、膨胀、腐蚀、滤波)等功能。接口函数丰富有DLL和OCX。支持VB、VC等开发工具。在OCX功能表中,每个功能之间都坐标联系接口,提高了功能之间的整合性能。另外创科提供打大量的范例代码以帮助开发者对图像识别的开发速度。       
    【详情请联系】 深圳市创科自动化控制技术有限公司电话:0755-33938283 手机:13480974764 联系人:黎 友(先生)  http://www.szcktech.com mail:szcktech@163.com  
VB DEMO 下载地址:
http://www.namipan.com/d/VB%20CKVISION%20DEMO.rar/48c872cf2528d3a7dc6461927ae66115017a674778300e00

[解决办法]
如果只是对于这一特定问题不必做得那么复杂,线扫描确定纸张的四个定点,然后进行几何矫正,(因为没有扭曲,所以只要经过简单的线性变换就可以生成标准图像,具体变换矩阵可以参考遥感图像矫正,或者加我QQ,我帮你试试)矫正后的图像每个选项的位置基本固定,可预定义常量点数组(每个选项的中心点),通过该点的颜色识别就可以了,至于其他就是评分的函数,注意不能只检测正确的是否涂色,当心有学生非法多选(我当时就干过)。

热点排行