平滑嘈杂图像过滤器的最佳方法是什么?
What is the best way to smoothen a noisy image filter?
我目前正在尝试在 Unity 中重现 Instagram 的水彩效果。
Instagram:https://i.imgur.com/aMyEhjS.jpg
我的做法:https://i.imgur.com/9zIOQ7k.jpg
我的方法比较吵。这是创建效果的主要代码:
float3 stepColor(float3 col){
const float3 lumvals = float3(0.5,0.7,1.0);
float3 hsv = rgb2hsv(col);
if(hsv.z <= 0.33){
hsv.z = lumvals.x;
}
else if(hsv.z <= 0.55){
hsv.z = lumvals.y;
}
else{
hsv.z = lumvals.z;
}
return hsv2rgb(hsv);
}
哪种算法适合在此处对最终结果进行去噪和平滑处理,因为 Instagram 正在实现它?
水彩滤镜使用一种叫做均值漂移分析的东西来平均化图像,同时保留特征。这是一种迭代方法,您可以使像素簇趋向于它们的平均值。
这是一个 java 代码示例:
https://imagej.nih.gov/ij/plugins/mean-shift.html
这是一篇描述水彩效果及其成分(包括边缘变暗)的论文:
http://maverick.inria.fr/Publications/2006/BKTS06/watercolor.pdf
有一个带有 CUDA 和 OpenCL 实现的 github 项目,但如果您想真正理解该算法,我建议您参考此页面,它使用 python 代码非常巧妙地解释了它:
http://www.chioka.in/meanshift-algorithm-for-the-rest-of-us-python/
我想到的另一个选择是使用 Sobel/Roberts 交叉过滤器来检测图像中的所有边界,然后使用该值的倒数作为高斯模糊的掩码。它不会给你同样好的分层效果。
我目前正在尝试在 Unity 中重现 Instagram 的水彩效果。
Instagram:https://i.imgur.com/aMyEhjS.jpg
我的做法:https://i.imgur.com/9zIOQ7k.jpg
我的方法比较吵。这是创建效果的主要代码:
float3 stepColor(float3 col){
const float3 lumvals = float3(0.5,0.7,1.0);
float3 hsv = rgb2hsv(col);
if(hsv.z <= 0.33){
hsv.z = lumvals.x;
}
else if(hsv.z <= 0.55){
hsv.z = lumvals.y;
}
else{
hsv.z = lumvals.z;
}
return hsv2rgb(hsv);
}
哪种算法适合在此处对最终结果进行去噪和平滑处理,因为 Instagram 正在实现它?
水彩滤镜使用一种叫做均值漂移分析的东西来平均化图像,同时保留特征。这是一种迭代方法,您可以使像素簇趋向于它们的平均值。
这是一个 java 代码示例: https://imagej.nih.gov/ij/plugins/mean-shift.html
这是一篇描述水彩效果及其成分(包括边缘变暗)的论文: http://maverick.inria.fr/Publications/2006/BKTS06/watercolor.pdf
有一个带有 CUDA 和 OpenCL 实现的 github 项目,但如果您想真正理解该算法,我建议您参考此页面,它使用 python 代码非常巧妙地解释了它:
http://www.chioka.in/meanshift-algorithm-for-the-rest-of-us-python/
我想到的另一个选择是使用 Sobel/Roberts 交叉过滤器来检测图像中的所有边界,然后使用该值的倒数作为高斯模糊的掩码。它不会给你同样好的分层效果。