VB数字图像处理代码
ï??Dim RGB1(250000) As Integer 'å?šä?‰ä??ä?ªå??æ‖?åƒ ç? çš„æ•?ç?„ Dim x(256) As Long 'å??æ‖?å??åº‖ç??åº?å??çš„é??æ•?
Dim y(256, 2)
Dim x1(256)
Private Sub Command1_Click()
Open "D:\æ–‡ä??.txt" For Output As #13
Dim i, j As Integer
Dim r, g, b, c As Long
For i = 0 To Picture1.ScaleWidth - 1
For j = 0 To Picture1.ScaleHeight - 1
c = Picture1.Point(i, j)
r = (c And &HFF)
g = (c And 65280) \ 256&
b = (c And &HFF0000) \ 65536
Picture2.PSet (i, j), RGB(r, r, r)
Print #13, "("; r; g; b; ")"
Next j
Next i
Close #13
End Sub
Private Sub Nä??Nä??å??æ??æ??_Click()
Picture2.Cls
N = InputBox("è??è?―å…?ä??ä?ª>=3çš„å?‡æ•?")
Dim a(1000)
For i = 0 To Picture1.ScaleHeight - N - 1
For j = 0 To Picture1.ScaleWidth - N - 1
For k = i To i + N - 1
For m = j To j + N - 1
a((k - i) * N + m - j) = RGB1(k * N + m)
Next m
Next k
For k = 0 To N * N - 1
For m = 0 To N * N - k
If a(m) > a(m + 1) Then
t = a(m)
a(m) = a(m + 1)
a(m + 1) = t
End If
Next m
Next k
b = (N + 1) / 2
RGB1((i + b - 1) * Picture1.ScaleWidth + j + b - 1) = a(b)
Next j
Next i
For i = 0 To Picture1.ScaleHeight - 1
For j = 0 To Picture1.ScaleWidth - 1
c = RGB1(i * Picture1.ScaleWidth + j)
Picture2.PSet (j, i), RGB(c, c, c)
Next j
Next i
End Sub
Private Sub ä? å??_Click()
CommonDialog1.Filter = "ä??å›?æ–‡ä??(*.bmp)|*.bmp" 'å›?片æ ?å? CommonDialog1.ShowSave 'ä??å??
SavePicture Picture2.Image, CommonDialog1.FileName
End Sub
Private Sub æ‰―å??_Click()
On Error GoTo Cancel 'æ‰―å??å??è??æ?†å?–æ?ˆæŠ?é‖?å?„ç?† CommonDialog1.Filter =
"ä??å›?æ–‡ä??(*.bmp)|*.bmp|ä??å›?æ–‡ä??(*.jpg)|*.jpg|ä??å›?æ–‡ä??(*.ico)|*.ico|æ
–‡ä??(*.*)|*.*"
CommonDialog1.ShowOpen
Picture1.Cls 'æ?…å?
Picture1.Picture = LoadPicture(CommonDialog1.FileName) 'è??å…?å›?åƒ Picture1.PaintPicture Picture1.Picture, 0, 0, Picture1.ScaleWidth,
Picture1.ScaleHeight 'è??å›?片é?‚åº‖窗å ?å??å? 'Open "D:\æ–‡ä??.txt" For Output As #13
'å?†å›?ç‰‡åƒ ç? ä??æ??æ‖?å…?RGB1æ•?ç?„ä??ï?ˆç??åº?å›?åƒ?çš„R=G=Bï?‰ Dim i, j As Integer
Dim r, g, b, c As Long
For i = 0 To Picture1.ScaleHeight - 1
For j = 0 To Picture1.ScaleWidth - 1
c = Picture1.Point(j, i)
r = (c And &HFF) 'å?†16è?›åˆ?çš„å›?åƒ?ä??æ??è??æ??æˆ?10è?›åˆ?æ•?
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
RGB1(i * Picture1.ScaleWidth + j) = r
'Print #13, RGB1(i * j + j)
Next j
Next i
'Close #13
Cancel:
End Sub
Private Sub 底片_Click()
Picture2.Cls
For i = 0 To Picture1.ScaleWidth - 1
For j = 0 To Picture1.ScaleHeight - 1
c = Picture1.Point(i, j)
r = (c And &HFF)
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
Picture2.PSet (i, j), RGB(255 - r, 255 - r, 255 - r)
Next j
Next i
End Sub
Private Sub å?…åº?分è??ç?‡å??化_Click()
a = InputBox("è??è?―å…?ç??åº?çº?æ•?")
If a = 2 Then
Picture2.Cls
For i = 0 To Picture1.ScaleHeight - 1
For j = 0 To Picture1.ScaleWidth - 1
c = Picture1.Point(j, i)
r = (c And &HFF) 'å?†16è?›åˆ?çš„å›?åƒ?ä??æ??è??æ??æˆ?10è?›åˆ?æ•?
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
If 0 <= r And r <= 127 Then
Picture2.PSet (j, i), RGB(0, 0, 0)
Else: Picture2.PSet (j, i), RGB(255, 255, 255)
End If
Next j
Next i
ElseIf a = 4 Then
Picture2.Cls
For i = 0 To Picture1.ScaleHeight - 1
For j = 0 To Picture1.ScaleWidth - 1
c = Picture1.Point(j, i)
r = (c And &HFF) 'å?†16è?›åˆ?çš„å›?åƒ?ä??æ??è??æ??æˆ?10è?›åˆ?æ•?
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
If 0 <= r And r <= 63 Then
Picture2.PSet (j, i), RGB(0, 0, 0)
ElseIf 64 <= r And r <= 127 Then
Picture2.PSet (j, i), RGB(63, 63, 63)
ElseIf 128 <= r And r <= 191 Then
Picture2.PSet (j, i), RGB(127, 127, 127)
Else: Picture2.PSet (j, i), RGB(191, 191, 191)
End If
Next j
Next i
ElseIf a = 8 Then
Picture2.Cls
For i = 0 To Picture1.ScaleHeight - 1
For j = 0 To Picture1.ScaleWidth - 1
c = Picture1.Point(j, i)
r = (c And &HFF) 'å?†16è?›åˆ?çš„å›?åƒ?ä??æ??è??æ??æˆ?10è?›åˆ?æ•?
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
For k = 0 To 7
If Int(r / 32) = k Then
a = 32 * k
Picture2.PSet (j, i), RGB(a, a, a)
Exit For
'é‡ æ–?分é…?ç??åº?å??ï?Œä??æ—?æ‰?åˆ?é??ä?Šç?ˆæ??å?ªç??ï?Œæ??é??è??è?Œé?Ÿåº?
End If
Next k
Next j
Next i
ElseIf a = 16 Then
Picture2.Cls
For i = 0 To Picture1.ScaleHeight - 1
For j = 0 To Picture1.ScaleWidth - 1
c = Picture1.Point(j, i)
r = (c And &HFF) 'å?†16è?›åˆ?çš„å›?åƒ?ä??æ??è??æ??æˆ?10è?›åˆ?æ•?
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
For k = 0 To 15
If Int(r / 16) = k Then
a = 16 * k
Picture2.PSet (j, i), RGB(a, a, a)
Exit For
End If
Next k
Next j
Next i
ElseIf a = 32 Then
Picture2.Cls
For i = 0 To Picture1.ScaleHeight - 1
For j = 0 To Picture1.ScaleWidth - 1
c = Picture1.Point(j, i)
r = (c And &HFF) 'å?†16è?›åˆ?çš„å›?åƒ?ä??æ??è??æ??æˆ?10è?›åˆ?æ•?
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
For k = 0 To 31
If Int(r / 8) = k Then
a = 8 * k
Picture2.PSet (j, i), RGB(a, a, a)
Exit For
End If
Next k
Next j
Next i
ElseIf a = 64 Then
Picture2.Cls
For i = 0 To Picture1.ScaleHeight - 1
For j = 0 To Picture1.ScaleWidth - 1
c = Picture1.Point(j, i)
r = (c And &HFF) 'å?†16è?›åˆ?çš„å›?åƒ?ä??æ??è??æ??æˆ?10è?›åˆ?æ•?
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
For k = 0 To 63
If Int(r / 4) = k Then
a = 4 * k
Picture2.PSet (j, i), RGB(a, a, a)
Exit For
End If
Next k
Next j
Next i
ElseIf a = 128 Then
Picture2.Cls
For i = 0 To Picture1.ScaleHeight - 1
For j = 0 To Picture1.ScaleWidth - 1
c = Picture1.Point(j, i)
r = (c And &HFF) 'å?†16è?›åˆ?çš„å›?åƒ?ä??æ??è??æ??æˆ?10è?›åˆ?æ•?
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
For k = 0 To 127
If Int(r / 2) = k Then
a = 2 * k
Picture2.PSet (j, i), RGB(a, a, a)
Exit For
End If
Next k
Next j
Next i
ElseIf a = 256 Then
Picture2.Cls
For i = 0 To Picture1.ScaleHeight - 1
For j = 0 To Picture1.ScaleWidth - 1
c = Picture1.Point(j, i)
r = (c And &HFF) 'å?†16è?›åˆ?çš„å›?åƒ?ä??æ??è??æ??æˆ?10è?›åˆ?æ•?
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
Picture2.PSet (j, i), RGB(r, r, r)
Next j
Next i
Else: MsgBox "è??é‡ æ–?è?―å…?ï?•"
End If
End Sub
Private Sub å?‡è??化å›?åƒ _Click()
Picture2.Scale (0, 0)-(417, 441) 'é‡ æ–?å?šä?‰å æ ‡
For i = 0 To Picture1.ScaleWidth - 1
For j = 0 To Picture1.ScaleHeight - 1
c = Picture1.Point(i, j)
r = (c And &HFF)
r = y(r, 0)
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
Picture2.PSet (i, j), RGB(r, r, r)
Next j
Next i
End Sub
Private Sub ç?ºé—?分è??ç?‡å??化_Click()
Picture2.Cls
a = InputBox("è??è?―å…?采æ ?é—?éš‖")
For i = 0 To Picture1.ScaleHeight - 1 Step a
For j = 0 To Picture1.ScaleWidth - 1 Step a
c = Picture1.Point(j, i)
r = (c And &HFF) 'å?†16è?›åˆ?çš„å›?åƒ?ä??æ??è??æ??æˆ?10è?›åˆ?æ•?
'g = (c And 65280) \ 256&
'b = (c And &HFF0000) \ 65536
Picture2.PSet (j, i), RGB(r, r, r)
Next j
Next i
End Sub
Private Sub é??出_Click()
End
End Sub
Private Sub ç›?æ–?å›?_Click()
'ç?Ÿè??æ??ä?ªç??åº?å??çš„é??æ•?
'Dim x(256)
For i = 0 To 255
For j = 0 To Picture1.ScaleWidth * Picture1.ScaleHeight - 1
If RGB1(j) = i Then
x(i) = x(i) + 1
End If
Next j
Next i
Picture2.Scale (0, 3000)-(512, 0) 'è??å?šç‖?å›?å æ ‡ Picture2.Cls 'æ?…å?
'ç‖?ç?Ÿè??ç›?æ–?å›?
For i = 0 To 255
Picture2.Line (i * 2, 0)-(i * 2, x(i))
Next i
End Sub
Private Sub ç›?æ–?å›?å?‡è??化_Click() 'Dim y(256, 2)
'Dim x1(256)
'å?‡è??化
For i = 0 To 255
For j = 0 To i
y(i, 0) = y(i, 0) + x(j)
Next j
y(i, 0) = Int(255 * y(i, 0) / (Picture1.ScaleWidth * Picture1.ScaleHeight) + 0.5)
y(i, 1) = x(i)
Next i
For i = 0 To 255
For j = 0 To 255
If y(j, 0) = i Then
x1(i) = x1(i) + y(j, 1)
End If
Next j
Next i
Picture2.Scale (0, 3000)-(512, 0) 'è??å?šç‖?å›?å æ ‡ Picture2.Cls 'æ?…å?
'ç‖?å?‡è??ç›?æ–?å›?
For i = 0 To 255
Picture2.Line (i * 2, 0)-(i * 2, x1(i))
Next i
End Sub