【发布时间】:2016-07-11 02:28:28
【问题描述】:
为了找到在 iOS 上执行自适应阈值处理的内核,我进行了全面研究。不幸的是,我不理解内核语言或它背后的逻辑。下面,我找到了一个执行阈值处理的例程 (https://gist.github.com/xhruso00/a3f8a9c8ae7e33b8b23d)
static NSString * const kKernelSource = @"kernel vec4 thresholdKernel(sampler image)\n"
"{\n"
" float inputThreshold = 0.05;\n"
" float pass = 1.0;\n"
" float fail = 0.0;\n"
" const vec4 vec_Y = vec4( 0.299, 0.587, 0.114, 0.0 );\n"
" vec4 src = unpremultiply( sample(image, samplerCoord(image)) );\n"
" float Y = dot( src, vec_Y );\n"
" src.rgb = vec3( compare( Y - inputThreshold, fail, pass));\n"
" return premultiply(src);\n"
"}";
是否可以将其重写为自适应阈值内核?我提供给它的图像已经变成了黑白并且已经模糊了。你有什么资源可以指点我吗?我想坚持使用 CoreImage,因为我的整个堆栈都是围绕它构建的。
编辑:我试图实现的最佳示例/参考已在 GPUImage 的 GPUImageAdaptiveThresholdFilter 中实现 - https://github.com/BradLarson/GPUImage/blob/c5f0914152419437869c35e29858773b1a06083c/framework/Source/GPUImageAdaptiveThresholdFilter.m
【问题讨论】:
-
我用描述、金属和现代方法更新了我的代码gist.github.com/xhruso00/a3f8a9c8ae7e33b8b23d 我用下面的代码启发了自己,但下面的代码不考虑 alpha 预乘(透明区域将变为黑色或白色)。跨度>
标签: ios core-image cifilter adaptive-threshold cikernel