Image convolution: Difference between revisions
Content added Content deleted
m (→{{header|J}}) |
m (→{{header|J}}: use lang block for syntax highlighting and add whitespace to help with reading) |
||
Line 612: | Line 612: | ||
<lang J>NB. pad the edges of an array with border pixels |
<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) |
NB. (increasing the first two dimensions by 1 less than the kernel size) |
||
pad=:adverb define |
pad=: adverb define |
||
'a b'=. (<.,.>.) 0.5 0.5 p. $m |
'a b'=. (<. ,. >.) 0.5 0.5 p. $m |
||
a"_`(0,]-1:)`(#1:)}~&# # b"_`(0,]-1:)`(#1:)}~&(1{$) #"1 ] |
a"_`(0 , ] - 1:)`(# 1:)}~&# # b"_`(0 , ] - 1:)`(# 1:)}~&(1 { $) #"1 ] |
||
) |
) |
||
kernel_filter=:adverb define |
kernel_filter=: adverb define |
||
($m)+/ .*&(,m)&(,/);._3 m pad |
($m)+/ .*&(,m)&(,/);._3 m pad |
||
)</lang> |
)</lang> |
||
Line 626: | Line 626: | ||
Example use: |
Example use: |
||
NB. kernels borrowed from C and TCL implementations |
<lang J> NB. kernels borrowed from C and TCL implementations |
||
sharpen_kernel=: _1+10*4=i.3 3 |
|||
blur_kernel=: 3 3$%9 |
|||
emboss_kernel=: _2 _1 0,_1 1 1,:0 1 2 |
|||
sobel_emboss_kernel=: _1 _2 _1,0,:1 2 1 |
|||
'blurred.ppm' writeppm~ blur_kernel kernel_filter readppm 'original.ppm'</lang> |
|||
=={{header|Java}}== |
=={{header|Java}}== |