Ich habe zwei Grafiken.
Von diesen beiden Grafiken möchte ich von einem Bereich (z.B. 50x50 Pixel) den prozentualen Unterschied berechnen, und dies viele male.
Das funktioniert auch:
Code: Alles auswählen
InitSprite()
Global *I1Buffer, I1pitch, *I2Buffer, I2pitch
UseJPEGImageDecoder()
LoadImage(1,"CIMG2059.jpg")
StartDrawing(ImageOutput(1))
*I1Buffer = DrawingBuffer()
I1Pitch = DrawingBufferPitch()
If Not *I1Buffer
End
EndIf
StopDrawing()
LoadImage(2,"CIMG2061.jpg")
StartDrawing(ImageOutput(2))
*I2Buffer = DrawingBuffer()
I2Pitch = DrawingBufferPitch()
If Not *I2Buffer
End
EndIf
StopDrawing()
Procedure.f CompareImages(x1.u,y1.u,x2.u,y2.u,sx.u,sy.u)
For x.u = 0 To sx-1
x3.u = (x + x1) * 3
x4.u = (x + x2) * 3
For y.u = 0 To sy-1
Pixel1 = PeekL(*I1Buffer+x3+(y+y1)*I1Pitch)
Pixel2 = PeekL(*I2Buffer+x4+(y+y2)*I2Pitch)
Indexer = Indexer+Abs(Red(Pixel1)-Red(Pixel2))+Abs(Green(Pixel1)-Green(Pixel2))+Abs(Blue(Pixel1)-Blue(Pixel2))
Next y
Next x
Indexer2.f = Round(Indexer/(sx*sy*155*3)*100000,#PB_Round_Nearest)/1000
ProcedureReturn Indexer2
EndProcedure
Procedure CompareThis(x1.u,y1.u,bx.u,by.u,sx1.u,sy1.u,sx2.u,sy2.u)
For x.u = sx1 To sx2
For y.u = sy1 To sy2
CompareImages(x1,y1,x,y,bx,by)
Next y
Next x
EndProcedure
t_start = ElapsedMilliseconds()
CompareThis(0,0,50,50,0,0,50,50)
laufzeit_jetzt = ElapsedMilliseconds() - t_start
Debug "das programm läuft seit " + Str(laufzeit_jetzt) + "ms"
EndDamit ich den Unterschied der beiden Sprites erhalte, müsste ich das eine vom anderen subtrahieren.
Dazu gibt es die funktion Sprite3DBlendingMode(Ausgangsmodus, Zielmodus).
Code: Alles auswählen
#D3DBLEND_ZERO = 1
#D3DBLEND_ONE = 2
#D3DBLEND_SRCCOLOR = 3
#D3DBLEND_INVSRCCOLOR = 4
#D3DBLEND_SRCALPHA = 5
#D3DBLEND_INVSRCALPHA = 6
#D3DBLEND_DESTALPHA = 7
#D3DBLEND_INVDESTALPHA = 8
#D3DBLEND_DESTCOLOR = 9
#D3DBLEND_INVDESTCOLOR = 10
#D3DBLEND_SRCALPHASAT = 11
#D3DBLEND_BOTHSRCALPHA = 12
#D3DBLEND_BOTHINVSRCALPHA = 13Oder ist es damit nicht möglich?
Welche Möglichkeiten habe ich sonst noch?
Mein Ziel ist es letztendlich eine Controlpoint Generator zu programmieren, ähnlich wie http://user.cs.tu-berlin.de/~nowozin/autopano-sift/
Ich bin übrigens Anfänger, wass PB anbelangt.
Besten Dank für eure Hilfe
