gizmotech
18th March 2004, 00:13
Gday Guys,
Given I've never really scripted in any sense I'm going to put forward some ideas here, and I'm just looking for a little feedback concerning feasability. I'm more looking at making this from a script, as opposed to programing a filter (given I'm largely incompetent when it comes to programming).
Now, I'm working on trying to enhance the basic chroma smoother/Derainbower that shodan posted a while back. after seeing his inital results, I did a bit of research into how rainbows in animated content like to behave. I've noted the following (all relative to animated content):
Rainbows seldom exist in full frame movement
Rainbows relating to color leaking can be fixed via spatial chroma smoothing
Rainbows which exist in large areas on relatively static scenes (ie change from previous and next in actual movement (not pixel change) is less then 10%), insist on existing temporally and cannot be spacially smoothed.
Rainbows which exist in small areas, in lines, on relatively static scenes can usually be leveled out via chroma spacial smoothing.
Now, given these observations (having no more technical knowledge then this) I've done some thinking as to how I might "proceed", but this is where I'm looking for suggestions.
The basic outline of the script should be as follows:
input current/previous/next frames
determine overall movement between frames in luma channel (using perhaps an edge mask difference %)
IF movement differential Forward% under certian value (say 10%)
perform heavy temporal smoothing (to chroma) based off of a luma motion mask w/ current/next frames
IF Movement differential Backwards% under certain value (say 10%)
perform heavy temporal smoothing (to chroma) based off of a luma motion mask w/ current/previous frames
Perform spatial smoothing on chroma (similar to shodan method, however using stronger smoother... sshiq/deen)
end.
This would, in theory, analyze the overal frame movement, and apply strong temporal filtering in a previous/current/next to the chroma channel to remove active rainbowing. At the same time, a relative amount of spatial smoothing would be applied after this to remove chroma color bleeds, and area rainbows from static scenes, and level out rainbows in action scenes without causing temporal chroma ghosting through high amounts of temporal chroma filtering.
If anyone has any ideas on how to go about this, suggestions for the process, or maybe even could throw this together in a hurry (I don't suspect it can be "that" hard) I would appreciate it. This filter would be largely aimed at animated rainbowing, given the levels of chroma filtering used, specifically for the color bleeding would destroy live action content (Or atleast I suspect it would).
gizmo.
Edited #1
Luma motion mask for heavy temporal smoothing.
Edited #2
Updated Title... maybe it'll see more action.
Given I've never really scripted in any sense I'm going to put forward some ideas here, and I'm just looking for a little feedback concerning feasability. I'm more looking at making this from a script, as opposed to programing a filter (given I'm largely incompetent when it comes to programming).
Now, I'm working on trying to enhance the basic chroma smoother/Derainbower that shodan posted a while back. after seeing his inital results, I did a bit of research into how rainbows in animated content like to behave. I've noted the following (all relative to animated content):
Rainbows seldom exist in full frame movement
Rainbows relating to color leaking can be fixed via spatial chroma smoothing
Rainbows which exist in large areas on relatively static scenes (ie change from previous and next in actual movement (not pixel change) is less then 10%), insist on existing temporally and cannot be spacially smoothed.
Rainbows which exist in small areas, in lines, on relatively static scenes can usually be leveled out via chroma spacial smoothing.
Now, given these observations (having no more technical knowledge then this) I've done some thinking as to how I might "proceed", but this is where I'm looking for suggestions.
The basic outline of the script should be as follows:
input current/previous/next frames
determine overall movement between frames in luma channel (using perhaps an edge mask difference %)
IF movement differential Forward% under certian value (say 10%)
perform heavy temporal smoothing (to chroma) based off of a luma motion mask w/ current/next frames
IF Movement differential Backwards% under certain value (say 10%)
perform heavy temporal smoothing (to chroma) based off of a luma motion mask w/ current/previous frames
Perform spatial smoothing on chroma (similar to shodan method, however using stronger smoother... sshiq/deen)
end.
This would, in theory, analyze the overal frame movement, and apply strong temporal filtering in a previous/current/next to the chroma channel to remove active rainbowing. At the same time, a relative amount of spatial smoothing would be applied after this to remove chroma color bleeds, and area rainbows from static scenes, and level out rainbows in action scenes without causing temporal chroma ghosting through high amounts of temporal chroma filtering.
If anyone has any ideas on how to go about this, suggestions for the process, or maybe even could throw this together in a hurry (I don't suspect it can be "that" hard) I would appreciate it. This filter would be largely aimed at animated rainbowing, given the levels of chroma filtering used, specifically for the color bleeding would destroy live action content (Or atleast I suspect it would).
gizmo.
Edited #1
Luma motion mask for heavy temporal smoothing.
Edited #2
Updated Title... maybe it'll see more action.