⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 左目标影像窗口.frm

📁 摄影测量影象匹配
💻 FRM
字号:
VERSION 5.00
Begin VB.Form Form2 
   BackColor       =   &H80000002&
   Caption         =   "左目标影像窗口"
   ClientHeight    =   9165
   ClientLeft      =   60
   ClientTop       =   465
   ClientWidth     =   12870
   ControlBox      =   0   'False
   LinkTopic       =   "Form2"
   ScaleHeight     =   9165
   ScaleWidth      =   12870
   StartUpPosition =   3  '窗口缺省
   Begin VB.Frame Frame1 
      BackColor       =   &H8000000D&
      Height          =   975
      Left            =   120
      TabIndex        =   1
      Top             =   8160
      Width           =   12615
      Begin VB.CommandButton Command3 
         Caption         =   "刷新"
         Height          =   615
         Left            =   6960
         TabIndex        =   4
         Top             =   240
         Width           =   2415
      End
      Begin VB.CommandButton Command2 
         Caption         =   "结束"
         Height          =   615
         Left            =   9480
         TabIndex        =   3
         Top             =   240
         Width           =   2535
      End
      Begin VB.CommandButton Command1 
         Caption         =   "返回匹配主窗体进行粗匹配"
         Height          =   615
         Left            =   600
         TabIndex        =   2
         Top             =   240
         Width           =   2535
      End
   End
   Begin VB.PictureBox Picture1 
      AutoRedraw      =   -1  'True
      AutoSize        =   -1  'True
      Height          =   8055
      Left            =   120
      Picture         =   "左目标影像窗口.frx":0000
      ScaleHeight     =   7995
      ScaleWidth      =   12600
      TabIndex        =   0
      Top             =   120
      Width           =   12660
   End
End
Attribute VB_Name = "Form2"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False



Private Sub Command1_Click() '判断搜索范围的大小

Form3.Command5.Enabled = True
bianbiaox = Val(InputBox("请选择是否需要先选定一个范围" + vbCrLf + "如果需要则输入1,不需要则输入2" _
+ vbCrLf + "如果选1则在右像片上同名点的左右一定范围内各选择一个点" + vbCrLf + "如果选2则从右像片的最左边开始一直到最右边", , "2"))

If bianbiaox = 1 Then
Form3.Show
Else
Form3.Command5.Enabled = False
Form2.Hide
Form1.Show
End If

Form1.Command1.Enabled = False
Form1.Command2.Enabled = True
Form1.Command3.Enabled = False
End Sub

Private Sub Command2_Click()
End
End Sub

Private Sub Picture1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim nmz As Integer '目标窗口中心行列号
Dim i As Integer, j As Integer
Dim guodu1 As Integer, guodu2 As Integer
Dim nbiaoh As Integer, nbiaol As Integer  '每个水平像素单元在倾斜影象中相对于左上角的行列号

Dim caix1 As Single, caiy1 As Single   '采样点周围的四个像元素的中心坐标的数值
Dim caix2 As Single, caiy2 As Single
Dim caix3 As Single, caiy3 As Single
Dim caix4 As Single, caiy4 As Single

Dim hui1 As Single, hui2 As Single  '采样点周围的四个像素的灰度的数值
Dim hui3 As Single, hui4 As Single

Dim x1 As Single, y1 As Single   '采样点和周围像素相对平面位置关系

zmx = X
zmy = Y

zmxp = zmx
zmyp = zmy

ntming = ntming + 1

Form2.Picture1.DrawWidth = 3
Picture1.Line (zmx - 0.1, zmy)-(zmx + 0.1, zmy), vbRed    '显示目标点
Picture1.Line (zmx, zmy - 0.1)-(zmx, zmy + 0.1), vbRed
Form2.Picture1.ForeColor = vbMagenta
Form2.Picture1.CurrentX = zmx
Form2.Picture1.CurrentY = zmy
Form2.Picture1.Print ntming

Call x_xt(zmxp, zmyp, a1, b1, c1, a2, b2, c2, a3, b3, c3)   '把目标点的像平面坐标转换到水平影像
nm = 11  ' 搜索窗口的大小
nmz = Int(nm / 2) + 1
guodu1 = nmz - 1
guodu2 = 1
''''''''''''''''''''''''''以选择的目标点为中心建立一个目标影像窗口求取各个像素的坐标''''''''''''''''''''''''''
ReDim xzp(nm, nm)
ReDim yzp(nm, nm)
xzp(nmz, nmz) = zmxp
yzp(nmz, nmz) = zmyp

For j = 1 To nmz - 1
For i = 1 To nm
xzp(i, j) = xzp(nmz, nmz) - guodu1 * jiange1
Next i
guodu1 = guodu1 - 1
Next j
For j = nmz + 1 To nm
For i = 1 To nm
xzp(i, j) = xzp(nmz, nmz) + guodu2 * jiange1
Next i
guodu2 = guodu2 + 1
Next j
For i = 1 To nm
xzp(i, nmz) = xzp(nmz, nmz)
Next i

guodu1 = nmz - 1
guodu2 = 1
For i = 1 To nmz - 1
For j = 1 To nm
yzp(i, j) = yzp(nmz, nmz) + guodu1 * jiange1
Next j
guodu1 = guodu1 - 1
Next i
For i = nmz + 1 To nm
For j = 1 To nm
yzp(i, j) = yzp(nmz, nmz) - guodu2 * jiange1
Next j
guodu2 = guodu2 + 1
Next i
For j = 1 To nm
yzp(nmz, j) = yzp(nmz, nmz)
Next j
''''''''''''''''''''''''''对水平的目标窗口在原倾斜影象中进行重新灰度采样'''''''''''''''''''''''''''''
ReDim zq(nm, nm)
For i = 1 To nm
For j = 1 To nm

Call xt_x(xzp(i, j), yzp(i, j), a1, b1, c1, a2, b2, c2, a3, b3, c3)

If Int((xzp(i, j) - (xzs + jiange / 2)) / jiange) <> (xzp(i, j) - (xzs + jiange / 2)) / jiange Or _
Int((yzp(i, j) - (yzs - jiange / 2)) / jiange) <> (yzp(i, j) - (yzs - jiange / 2)) / jiange Then

nbiaol = Int((xzp(i, j) - xzs) / jiange) + 1
nbiaoh = Int((yzs - yzp(i, j)) / jiange) + 1

caix2 = xzs + nbiaol * jiange - jiange / 2
caiy2 = yzs - nbiaoh * jiange + jiange / 2

caix1 = caix2 - jiange
caiy1 = caiy2

caix3 = caix2
caiy3 = caiy2 + jiange

caix4 = caix1
caiy4 = caiy3

huidul = Picture1.Point(caix1, caiy1)
Call huidujisuan(huidul, huidu)
hui1 = huidu

huidul = Picture1.Point(caix2, caiy2)
Call huidujisuan(huidul, huidu)
hui2 = huidu

huidul = Picture1.Point(caix3, caiy3)
Call huidujisuan(huidul, huidu)
hui3 = huidu

huidul = Picture1.Point(caix4, caiy4)
Call huidujisuan(huidul, huidu)
hui4 = huidu
x1 = xzp(i, j) - caix1
y1 = caiy2 - yzp(i, j)
Call chongcaiyang(x1, y1, hui1, hui2, hui3, hui4, zq(i, j))
Else
huidul = Picture1.Point(xzp(i, j), yzp(i, j))
Call huidujisuan(huidul, huidu)
zq(i, j) = huidu
End If
Next j
Next i
Form2.Command1.Enabled = True
End Sub

Private Sub Command3_Click()
Picture1.Picture = LoadPicture(App.Path + "\实验左.BMP")
End Sub

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -