Morpher


Author V. C. Mohan
Date Sep 14, 2005

Generating fully bounded areas (output from MaskMaker, Emarker or any other method) to be used as a mask, for coloring areas is ideal. However in many instances the boundaries have gaps and color leakages can occur. One way of filling these gaps is by morphing procedures known as "erode", "dilate", "close" and "open". "close" is an "erode" followed by "dilate" while "open" is "dilate" followed by "erode".

Some times the boundaries marked are too thick. Option "thin" thins out the mask lines to a pixel wide lines (This is also known as skelton used often in finger print image processing). The masks may have noise (salt) as unconnected individual white points. This can be corrected by "salt" option. The input to these procedures normally is a mask clip (generated by MaskMaker or Emarker or any other method).

There are other morphing methods to generate boundary lines on an image. Some of the other options may be tried for that purpose.

Morpher, in addition to the above options has also other options which work on an input grey scale clip. These are:
 Option "vale" draws all the valleys in the image .
 Option "ridge" marks out the ridges.
 Option "rorv" shows both ridges and valleys together.
 Option 'flood' shows all pixels below the lower threshold and all valleys.
 Option "drain" shows all pixels above upper threshold and all ridges.
 Option "ford" shows all pixels lying between upper and lower thresholds and all valleys and ridges.
 Option "salt" erases unconnected white points from a mask frame
 Option "pepper" erases unconnected black points from a mask frame.

Flood, drain and ford options have a test facility wherein a particular frame is repeatedly processed with linearly varying applicable parameters.

Morphing can be limited to a rectangular window size and position of which can linearly change in the range of frames.

RGB32, RGB24, YUY2 and YV12 formats only are supported.

Details of parameters
Description Name Type Limits Default
Input clip clip none
Starting frame number to process or frame number to test sf integer within clip 0
End frame number to process or number of test steps ef integer within clip and not less than sf last frame
Type of morphing type string "dilate" "erode" "close" "open" "thin" "ridge" "vale" "rorv" "flood" "drain" "ford" "salt" "pepper" "close"
Process window left x at start frame lx integer within frame, less than rx 0
Process window top y at start frame ty integer within frame, less than by 0
Process window right x at start frame rx integer within clip, more than lx frame width-1
Process window bottom y at start frame by integer within frame, more than ty frame height-1
Process window left x at end frame elx integer within frame, less than erx lx
Process window top y at end frame ety integer within clip, less than eby ty
Process window right x at end frame erx integer within clip, more than elx rx
Process window bottom y at end frame eby integer within frame, more than ety by
lower threshold at start frame lt integer 0 to 255 0
upper threshold at start frame ut integer 0 to 255, more than lt and for flood 255 255
Is this a test? test boolean true or false false
lower threshold at end frame flt integer 0 to 255 0
upper threshold at end frame flt integer 0 to 255, more than flt and for flood 255 255

Usage examples:-
Morpher(mask,type="open")
Morpher(mask,type="erode",ex=255,eh=300)
# test run of flood on frame 5 in 25 steps of parameter lt varying from 10 to 210.
Morpher(last,5,25,type="flood", lt=10,test=true,flt=210)
To Colorit Synopsis
To my index page
down load plugin
To Avisynth