Image convolution: Difference between revisions
→{{header|J}}: bugfixes (incidentally adding a j903 version requirement), and make kernels more easily generalizable (to 5x5, 7x7, etc.)
(link to wikipedia article) |
(→{{header|J}}: bugfixes (incidentally adding a j903 version requirement), and make kernels more easily generalizable (to 5x5, 7x7, etc.)) |
||
Line 785:
<lang J>NB. pad the edges of an array with border pixels
NB. (increasing the first two dimensions by 1 less than the kernel size)
pad=:
rank=.#$m
'first second'=. (<.,:>.)-:$m
-@(second+rank{.$) {. (first+rank{.$){.]
}}
kernel_filter=:
[: (0 >. 255 <. <.@:+&0.5) (1,:$m)+/ .*
Line 799 ⟶ 800:
Example use:
<lang J>
sharpen_kernel=: ({ _1,#@,)id_kernel
emboss_kernel=: id_kernel+(+/~ - >./)i.3
'blurred.ppm' writeppm~ blur_kernel kernel_filter readppm 'original.ppm'</lang>
|