Katie Boundary
2nd October 2021, 22:26
I've been experimenting recently with a deinterlacing strategy that performs a vertical Gaussian blur, then resharpens by the same amount, like Blur(1.0).sharpen(1.0) but performed in only one direction. The goal is to blend orphaned fields with their closest matches, without changing the overall sharpness of the non-interlaced parts of the image and without needing to rely on dumb bad algorithms to figure out which parts of the image are interlaced and which aren't.
I've encountered three curiosities so far.
The first is that Blur(1.0).Sharpen(1.0), when applied to progressive content, yields a blurrier image than the original. Not by a lot, but it's noticeable.
The second is that, if I'm doing my math correctly and I understand how generalconvolution works, the correct amount of blurring and deblurring SHOULD be:
generalconvolution(0,"0 1 0 0 2 0 0 1 0")
generalconvolution(0,"0 -1 0 0 6 0 0 -1 0")
However, this produces even blurrier results than Blur(1.0).Sharpen(1.0). The results of Blur(1.0).Sharpen(1.0) are most accurately replicated by:
generalconvolution(0,"0 1 0 0 2 0 0 1 0")
generalconvolution(0,"0 -1 0 0 4 0 0 -1 0")
The third oddity is that, if I try making the deblurring step any sharper...
generalconvolution(0,"0 1 0 0 2 0 0 1 0")
generalconvolution(0,"0 -3 0 0 11 0 0 -3 0")
...the results (for progressive content) score worse on PSNR tests compared to the "-1, 4, -1" filter.
Any clarification on what's going on would be appreciated.
I've encountered three curiosities so far.
The first is that Blur(1.0).Sharpen(1.0), when applied to progressive content, yields a blurrier image than the original. Not by a lot, but it's noticeable.
The second is that, if I'm doing my math correctly and I understand how generalconvolution works, the correct amount of blurring and deblurring SHOULD be:
generalconvolution(0,"0 1 0 0 2 0 0 1 0")
generalconvolution(0,"0 -1 0 0 6 0 0 -1 0")
However, this produces even blurrier results than Blur(1.0).Sharpen(1.0). The results of Blur(1.0).Sharpen(1.0) are most accurately replicated by:
generalconvolution(0,"0 1 0 0 2 0 0 1 0")
generalconvolution(0,"0 -1 0 0 4 0 0 -1 0")
The third oddity is that, if I try making the deblurring step any sharper...
generalconvolution(0,"0 1 0 0 2 0 0 1 0")
generalconvolution(0,"0 -3 0 0 11 0 0 -3 0")
...the results (for progressive content) score worse on PSNR tests compared to the "-1, 4, -1" filter.
Any clarification on what's going on would be appreciated.