Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #@gui moire_remove_only: moire_remove_only,moire_remove_only(0)
- #@gui : Starting pattern = choice(0,"Red-Green","Blue-Green","Green-Red","Green-Blue")
- #@gui : tile size = int (128,64,512)
- moire_remove_only:
- bayer_pattern=$1
- tile_size=$2
- -rgb2bayer[-1] $bayer_pattern,1 # convert greyscale raw image into RGB
- --moire_remove_horizontal[0] $bayer_pattern,1 # demosaic by interpolating green horizontally only
- -moire_remove_vertical[0] $bayer_pattern # demosaic by interpolating green vertically only
- -iain_min_fft4[0,1] $2 # break images into tiles, apply a FFT, keep the minimum FFT value from one image or the other, combine tiles.
- #@gui moire_remove_horizontal: moire_remove_horizontal,moire_remove_horizontal(0)
- #@gui : Starting pattern = choice(0,"Red-Green","Blue-Green","Green-Red","Green-Blue")
- moire_remove_horizontal:
- -rgb2bayer[-1] $1,1
- --l[0]
- -channels 1
- (0.5,1,0.5)
- -convolve[0] [1]
- -rm[1]
- -endl
- -c 0,255
- -split[0] c
- -reverse[1,3]
- -rm[3]
- -sub[0] [1]
- -sub[2] [1]
- -add[0,2] 255
- -rgb2bayer[0,2] $1,1
- -channels[0] 0
- -channels[2] 2
- -l[0]
- (.25,.5,.25;.5,1,.5;.25,.5,.25)
- -convolve[0] [1]
- -rm[1]
- -endl
- -l[2]
- (.25,.5,.25;.5,1,.5;.25,.5,.25)
- -convolve[0] [1]
- -rm[1]
- -endl
- -sub[0,2] 255
- -add[0] [1]
- -add[2] [1]
- ## -reverse[1,2]
- -append c
- -c 0,255
- #@gui moire_remove_vertical: moire_remove_vertical,moire_remove_vertical(0)
- #@gui : Starting pattern = choice(0,"Red-Green","Blue-Green","Green-Red","Green-Blue")
- moire_remove_vertical:
- -rgb2bayer[0] $1,1
- --l[0]
- -channels 1
- (0.5;1;0.5)
- -convolve[0] [1]
- -rm[1]
- -endl
- -c 0,255
- -split[0] c
- -reverse[1,3]
- -rm[3]
- -sub[0] [1]
- -sub[2] [1]
- -add[0,2] 255
- -rgb2bayer[0,2] $1,1
- -channels[0] 0
- -channels[2] 2
- -l[0]
- (.25,.5,.25;.5,1,.5;.25,.5,.25)
- -convolve[0] [1]
- -rm[1]
- -endl
- -l[2]
- (.25,.5,.25;.5,1,.5;.25,.5,.25)
- -convolve[0] [1]
- -rm[1]
- -endl
- -sub[0,2] 255
- -add[0] [1]
- -add[2] [1]
- ## -reverse[1,2]
- -append c
- -c 0,255
- #@gui iain_min_fft4: iain_min_fft4,iain_min_fft4(0)
- #@gui : size = int (128,64,512)
- iain_min_fft4:
- -append z # stack images for convenience
- tile_size=$1
- overlap=16
- cropwidth={w}
- cropheight={h}
- # create overlapping tiles
- -if {$cropwidth%$tile_size>0}
- -resize[0] {w+($tile_size-w%$tile_size)},100%,{d},{s},0,3
- -endif
- -if {$cropheight%$tile_size>0}
- -resize[0] 100%,{h+($tile_size-h%$tile_size)},{d},{s},0,3
- -endif
- h_tiles={w/$tile_size}
- v_tiles={h/$tile_size}
- -repeat $v_tiles
- v_count=$>
- -repeat $h_tiles
- h_count=$>
- --crop[0] {($h_count*$tile_size)-$overlap},{($v_count*$tile_size)-$overlap},{($h_count*$tile_size)+($tile_size+$overlap-1)},{($v_count*$tile_size)+($tile_size+$overlap-1)},1
- -done
- -done
- -rm[0]
- # once tiles are split find minimum FFT for each tile pair
- -apply_parallel "
- -l[0]
- -split z
- -rgb2yuv
- -fftpolar
- -min[0,2]
- -min[1,2]
- -ifftpolar
- -yuv2rgb
- -endl
- "
- # combine tiles
- -repeat $! -l[$>]
- -crop $overlap,$overlap,{$tile_size+$overlap-1},{$tile_size+$overlap-1}
- -endl
- -done
- -append_tiles $h_tiles,$v_tiles
- -crop 0,0,{$cropwidth-1},{$cropheight-1}
Advertisement
Add Comment
Please, Sign In to add comment