📄 左目标影像窗口.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 + -