Canny edge detector: Difference between revisions

(added Raku programming solution)
Line 2,164:
}
var Game = Canny.new("Valve_original.png", "Valve_monchrome_canny.png")</lang>
 
=={{header|Yabasic}}==
{{trans|Phix}}
<lang Yabasic>// Rosetta Code problem: http://rosettacode.org/wiki/Canny_edge_detector
// Adapted from Phix to Yabasic by Galileo, 01/2022
 
import ReadFromPPM2
 
MaxBrightness = 255
 
readPPM("Valve.ppm")
print "Be patient, please ..."
 
width = peek("winwidth")
height = peek("winheight")
dim pixels(width, height), C_E_D(3, 3)
 
data -1, -1, -1, -1, 8, -1, -1, -1, -1
for i = 0 to 2
for j = 0 to 2
read C_E_D(i, j)
next
next
 
// convert image to gray scale
for y = 1 to height
for x = 1 to width
c$ = right$(getbit$(x, y, x, y), 6)
r = dec(left$(c$, 2))
g = dec(mid$(c$, 3, 2))
b = dec(right$(c$, 2))
lumin = floor(0.2126 * r + 0.7152 * g + 0.0722 * b)
pixels(x, y) = lumin
next
next
 
dim new_image(width, height)
 
divisor = 1
 
// apply an edge detection filter
for y = 2 to height-2
for x = 2 to width-2
newrgb = 0
for i = -1 to 1
for j = -1 to 1
newrgb = newrgb + C_E_D(i+1, j+1) * pixels(x+i, y+j)
next
new_image(x, y) = max(min(newrgb / divisor,255),0)
next
next
next
 
// show result
 
for x = 1 to width
for y = 1 to height
c = new_image(x, y)
color c, c, c
dot x, y
next
next</lang>
672

edits