0
我正在实施2D Arnold的N x M图像的猫咪地图。问题是我无法取回原始像素的值(即Arnold cat map反转不起作用)。任何自由职业者的任何解决方案都将被支付。我根据2D Arnold的cat map方程编写了VB 6.0代码,用于混排和反转。用阿诺德的猫咪地图进行图像洗牌
Private Sub Cipher()
Dim Hm As Integer, i As Integer, x As Integer
Dim Wm As Integer, j As Integer, y As Integer
Wm = Wid - 1: Hm = Hgt - 1
pic1.ScaleMode = vbPixels
pic1.ScaleWidth = Wid
pic1.ScaleHeight = Hgt
Dim pp As Double, qq As Double
Dim nn As Integer, k As Integer
Dim xnn As Double, ynn As Double
pp = 2: qq = 5
nn = 1
For k = 1 To nn
For y = 0 To Hm
For x = 0 To Wm
'''''''''''' arnold cat map''''''''''''''''''
xnn = x + pp * y
ynn = qq * x + (pp * qq + 1) * y
xnn = xnn Mod Wm
ynn = ynn Mod Hm
Red(xnn, ynn) = Red(x, y)
Grn(xnn, ynn) = Grn(x, y)
Blu(xnn, ynn) = Blu(x, y)
Next x: Next y
'''''''''''' end of shfulling
For y = 0 To Hm: For x = 0 To Wm
pic1.PSet (x, y), RGB(Red(x, y), Grn(x, y), Blu(x, y))
Next x: Next y
pic1.Refresh
Next k
End Sub
这是阿诺德的猫地图逆代码:)
私人小组破译(因为你覆盖像素,而编码
Dim Hm As Integer, i As Integer, x As Integer
Dim Wm As Integer, j As Integer, y As Integer
Wm = Wid - 1: Hm = Hgt - 1
pic2.ScaleWidth = Wid
pic2.ScaleHeight = Hgt
Dim pp As Double, qq As Double
Dim nn As Integer, k As Integer
Dim xnn As Double, ynn As Double
pp = 2: qq = 5
nn = 1
For k = 1 To nn 'no. of iterations
For y = 0 To Hm
For x = 0 To Wm
'''''''''''' Inverse of Arnold Cat map''''''''''''''''''
xnn = Abs((x * ((pp * qq) + 1)) + (-pp * y))
ynn = Abs((-qq * x) + y)
xnn = xnn Mod Wm
ynn = ynn Mod Hm
'''''''''''''''''''''''''''''''''''''''''''''
Red(xnn, ynn) = Red(x, y)
Grn(xnn, ynn) = Grn(x, y)
Blu(xnn, ynn) = Blu(x, y)
Next x: Next y
'''''''''''' end of shuffling
Next k
For y = 0 To Hm: For x = 0 To Wm
pic2.PSet (x, y), RGB(Red(x, y), Grn(x, y), Blu(x, y))
Next x: Next y
End Sub
我这样做,但它不适合我。我仍然无法执行阿诺德猫图的逆方程。 – user3819984