47 lines
1.2 KiB
Plaintext
47 lines
1.2 KiB
Plaintext
Width% = 200
|
|
Height% = 200
|
|
|
|
DIM out&(Width%-1, Height%-1, 2)
|
|
|
|
VDU 23,22,Width%;Height%;8,16,16,128
|
|
*DISPLAY Lena
|
|
OFF
|
|
|
|
DIM filter%(2, 2)
|
|
filter%() = -1, -1, -1, -1, 12, -1, -1, -1, -1
|
|
|
|
REM Do the convolution:
|
|
FOR Y% = 1 TO Height%-2
|
|
FOR X% = 1 TO Width%-2
|
|
R% = 0 : G% = 0 : B% = 0
|
|
FOR I% = -1 TO 1
|
|
FOR J% = -1 TO 1
|
|
C% = TINT((X%+I%)*2, (Y%+J%)*2)
|
|
F% = filter%(I%+1,J%+1)
|
|
R% += F% * (C% AND &FF)
|
|
G% += F% * (C% >> 8 AND &FF)
|
|
B% += F% * (C% >> 16)
|
|
NEXT
|
|
NEXT
|
|
IF R% < 0 R% = 0 ELSE IF R% > 1020 R% = 1020
|
|
IF G% < 0 G% = 0 ELSE IF G% > 1020 G% = 1020
|
|
IF B% < 0 B% = 0 ELSE IF B% > 1020 B% = 1020
|
|
out&(X%, Y%, 0) = R% / 4 + 0.5
|
|
out&(X%, Y%, 1) = G% / 4 + 0.5
|
|
out&(X%, Y%, 2) = B% / 4 + 0.5
|
|
NEXT
|
|
NEXT Y%
|
|
|
|
REM Display:
|
|
GCOL 1
|
|
FOR Y% = 0 TO Height%-1
|
|
FOR X% = 0 TO Width%-1
|
|
COLOUR 1, out&(X%,Y%,0), out&(X%,Y%,1), out&(X%,Y%,2)
|
|
LINE X%*2,Y%*2,X%*2,Y%*2
|
|
NEXT
|
|
NEXT Y%
|
|
|
|
REPEAT
|
|
WAIT 1
|
|
UNTIL FALSE
|