自适应阈值效果图 demo 这几天抽空看了下GpuImage的filter,移植了高斯模糊与自适应阈值的vulkan compute shader实现,一个是基本的图像处理,一个是组合基础图像处理聚合,算是比较有代表性的二种. 高斯模糊实现与优化 大部分模糊效果主要是卷积核的实现,相应值根据公式得到. int ksize = paramet.blurRadius * 2 + 1; if (paramet.sigma <= 0) { paramet.sigma = ((ksize - 1) * 0…
现把D到O的大部分滤镜用vulkan的ComputeShader实现了,列举其中一些有点特殊的说明. GaussianBlurPosition 指定区域高斯模糊 没有按照GPUImage里的方式实现,按照类似GaussianSelectiveBlur方式实现,一张高斯模糊图,一张原图,二图进行混合,这种实现方式更灵活(模糊半径等参数),并且并不会降低性能(单独的高斯模糊更容易优化). SphereRefraction 环境映射 环境映射技术漫谈 和GlassSphere一样,主要就是球形坐标系与…
演示Android apk下载 需要Android 8以上. 先看效果图,大约一百多种滤镜,有超过一半的滤镜有参数设置,其参数调整界面使用反射自动生成与绑定. 如下每种选择一些进行展示. 视觉效果 图像处理 运动检测器最下面的数据表示图像最近时间变化大小,能以很少的性能耗费就能得到检测图像的变化量,LBP像素编码得到的每个像素中的每个位用来表示用周边的大小,显示出来的图像没有具体意义. 色彩调整 混合模式 如果对实现过程感兴趣,请转到Vulkan移植GPUImage总结,从aoce/Vulkan…
前面移植了几个比较复杂的效果后,算是确认了复杂滤镜不会对框架造成比较大的改动,开始从头移植,现已把A到C的所有滤镜用vulkan的ComputeShader实现了,讲一些其中实现的过程. AverageLuminanceThreshold 像素亮度平均阈值比较 从名字来看,就是算整图的平均高度,然后比较这个亮度值. GPUImage的实现,先平均缩少3*3倍,然后读到CPU中计算平均亮度,然后再给下一层计算. 这步回读会浪费大量时间,我之前在CUDA测试过,1080P的回读大约在2ms左右,就算…
现aoce_vulkan_extra把GPUImage里从P到Z的大部分滤镜用vulkan的ComputeShader实现了,也就是最后一部分的移植,整个过程相对前面来说比较简单,大部分我都是直接复制以前的实现改改就行了,还是列一些说明. PerlinNoise 柏林燥声生成一张静态图 柏林燥声的原理网上很多讲解的,用于生成平滑的图案,其实可以稍微改下,如加个如时间戳,就可变成一张平滑的动态图. PinchDistortion 收缩,凹面镜 实现类似BulgeDistortion(鱼眼效果),都…
Harris角点检测 UI还是用的上次扣像的,只有前后置可以用,别的没有效果,只看实现就好. 相应源码 在实现之前,我先重新整理编译glsl的生成工具,如Harris角点检测中间计算过程需要针对rgba32f做高斯模糊,我们前面针对rgba8实现过,现在使用glslangValidator针对一份文件生成一编译文件会导致维护麻烦,很多无意义的重复代码,暂时还不想把glslangValidator集成到代码中动态生成,所以在这,先搞定glsl根据编译条件生成多份文件的工具. 其所有glsl代码全统…
上个博客提到的阈值化只是针对图像全局进行阈值化,opencv提供了一个更好的函数cvAdaptiveThreshold,可以做到局部特征的阈值化,这样一来, 整个图像的信息可以被更好的提取. #include <cv.h> #include <highgui.h> #include "math.h" IplImage *img_gray = NULL, *img_thres = NULL, *img_adaptive = NULL; int main(int a…
定义:图像的二值化,就是将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的只有黑和白的视觉效果. 一幅图像包括目标物体.背景还有噪声,要想从多值的数字图像中直接提取出目标物体,常用的方法就是设定一个阈值T,用T将图像的数据分成两部分:大于T的像素群和小于T的像素群.这是研究灰度变换的最特殊的方法,称为图像的二值化(Binarization). 简单的阈值-(全局阈值): Python-OpenCV中提供了阈值(threshold)函数: cv2.threshold() 函数:…
参考文档: Adaptive Thresholding for the DigitalDesk.pdf       Adaptive Thresholding Using the Integral Image.pdf 一.问题的由来 一个现实: 当用照像机拍摄一副黑纸白字的纸张时,照相机获得的图像并不是真正的黑白图像.不管从什么角度拍摄,这幅图像实际上是灰度或者彩色的.除非仔细的设置灯光,否则照相机所拍摄的放在桌子上的纸张图像并不能代表原始效果.不像在扫描仪或打印机内部,想控制好桌子表面的光源是…
在图像处理应用中二值化操作是一个很常用的处理方式,例如零器件图片的处理.文本图片和验证码图片中字符的提取.车牌识别中的字符分割,以及视频图像中的运动目标检测中的前景分割,等等. 较为常用的图像二值化方法有:1)全局固定阈值:2)局部自适应阈值:3)OTSU等. 全局固定阈值很容易理解,就是对整幅图像都是用一个统一的阈值来进行二值化: 局部自适应阈值则是根据像素的邻域块的像素值分布来确定该像素位置上的二值化阈值.这样做的好处在于每个像素位置处的二值化阈值不是固定不变的,而是由其周围邻域像素的分布来…