Shader特效——“Kuwahara”的实现 【OpenCV】【GLSL】

本文代码参考自 skelking 的一篇博客 《kuwahara filter 实现》

Kuwahara 是一种降噪低通滤波器,能够较好的保留物体的边缘。相对于双边滤波和 Mean Shift 等传统的保边滤波器 (它们的缺点:对于高对比度图像,因为使用了阈值,要么不执行抽象,要么删除了相关信息而可能会导致它们失败。对于低对比度的图像,通常由于删除了太多的信息而导致失败),Kuwahara 即使在高对比度区域,Kuwahara滤镜也能很好地去除细节,即使在低对比度区域也能保护形状边界。

基本思想就是 将Kuwahara 的模板以目标像素为中心分成4块邻域,然后分别计算四块邻域的方差,取方差最小的邻域计算其平均值,得到的结果作为目标像素的新值。

Shader特效——“Kuwahara”的实现 【OpenCV】【GLSL】_第1张图片 (a) 平坦区域 (b) 转角 (c) 边缘

 

还有Java版本的代码:

Kuwahara Filter 作者的官网:https://imagej.nih.gov/ij/plugins/kuwahara.html

原理很简单,博客里也写的很清楚,我就不赘述了,在此我把代码结构整理得更清晰一点,并删除了一些多余的代码。

 

 
 

你可能感兴趣的:(OpenCV,Shader,ShaderJoy,——,Shader,实例详解)