做照片书哪个网站好国内4a广告公司有哪些

张小明 2026/1/16 19:23:05
做照片书哪个网站好,国内4a广告公司有哪些,wordpress底部自豪,网站从建设到上线流程因有关需求#xff0c;最近要弄个5*5的浮点版本的中值滤波#xff0c; 而且希望效率能做到极致。感觉这个事情不是随手搞定嘛#xff0c;因为5*5的字节版本的中值已经有模版了#xff0c;改为浮点的大差不差的#xff0c;没有啥问题。确实如此#xff0c;直接把早期的自己…因有关需求最近要弄个5*5的浮点版本的中值滤波 而且希望效率能做到极致。感觉这个事情不是随手搞定嘛因为5*5的字节版本的中值已经有模版了改为浮点的大差不差的没有啥问题。确实如此直接把早期的自己版本代码弄过来改下相关的数据类型和函数功能一下子就出来了而且效果也不俗。在【算法随记三】小半径中值模糊的急速实现16MB图7.5ms实现 Photoshop中蒙尘和划痕算法解读 中曾经提到对于5*5的中值理论上需要131次比较但是我现在找不到这个131的数据的来源和依据了。这几天看Opencv的代码在其medianFilter.cl以及median_blur.simd.hpp里的都有类似的比较具体如下image image这里的op算子就是比较算子一共有113处。在https://github.com/ravkum/medianFilter/blob/main/src/medianFilter.cl中也有类似的算子如下所示image这里只有99个算子。所以优化的第一步就是用这99个算子的方案代替原先我收集的131个的方案这个就会有25%左右的提速了。而且测试这99算子的结果和原先的131个以及opencv的113个算子的结果是一样的。而我们在百度搜索5*5中值滤波快速算法可以得到以下的信息5x5中值滤波的快速算法旨在减少标准排序方法的高计算复杂度通过优化排序或利用数据结构来加速中值查找。以下是一些常见的快速实现思路‌行-列排序优化‌先对5x5窗口的每一行进行排序确保每行有序然后对每一列排序使列内元素有序。经过此处理窗口被分为四个象限中心元素通常接近中值从而减少比较次数。‌在https://github.com/shrtique/sv_axis_median_5x5/blob/master/sources_1/new/median_5x5_top_module.sv中我们可以看到如下的一段文字说明复制代码//This is simplified module of median filtration with 5x5 window.//It has 3 stages: sorting by lines - sorting by columns - sorting main diagonal*//* main diagonal is one that has the smallest value of biggest column and..//.. biggest value of smallest column//// EXAMPLE//// [ 20, 10, 1, 6, 8 ] [ 20, 10, 8, 6, 1 ] [ 110, 72, 50, 48, 36 ] [ * , * , *, *, 36 ]// [ 32, 5, 40, 100, 60 ] [ 100, 60, 40, 32, 5 ] [ 100, 60, 40, 32, 7 ] [ * , * , *, 32, * ]// [ 14, 3, 22, 26, 68 ] -- [ 68, 26, 22, 14, 3 ] -- [ 80 , 30, 22, 14, 5 ] -- [ * , * , 26, * , * ]// [ 110, 12, 30, 7, 11 ] [ 110, 30, 12, 11, 7 ] [ 68 , 26, 12, 11, 3 ] [ * , 22, * , * , * ]// [ 72, 48, 36, 50, 80 ] [ 80, 72, 50, 48, 36 ] [ 20 , 10, 8 , 6 , 1 ] [ 20, * , * , * , * ]//// median 26////IMORTANT NOTE://This algorithm could make a mistake in one discret (one position): so if we range all pixels in upwards direction..//.. the median value will be on position 13 (from 1 up to 25), but sometimes algorithm takes neighbour value (e.g. 12).//We decided that this mistake cant dramatically decrease efficiency of suppressing impulsive noise on image复制代码也是一样的意思 sorting by lines - sorting by columns - sorting main diagonal那这样对于5*5的数据就是5次水平方向排序5次垂直方向排序还有一次对角线排序一共是11次排序而且每次排序都是对5个数据极性排序至于是升序还是降序其实不重要。这个时候我们再看前面的几个位置的排序次数反倒是那个99次排序很有意义他恰好是11的整数倍即每次排序需要进行9次比较。根据冒泡排序的一般过程如下所示复制代码int len 5;int i 0; int j; int t;for (i 0; i len - 1; i){for (j 0; j len - i - 1; j){if (a[j]a[j 1]){t a[j];a[j] a[j 1];a[j 1] t;}}}复制代码假定五个数据分别为p0/p1/p2/p3/p4则按照上面的循环展开后可得5个数据的排序需要以下的比较操作OP(p0, p1); OP(p1, p2); OP(p2, p3); OP(p3, p4);OP(p0, p1); OP(p1, p2); OP(p2, p3);OP(p0, p1); OP(p1, p2);OP(p0, p1);一共是10次也不是上面说的9次。不过观察opencv的那一部分代码的前面一部分我们把下标为0到4的部分提取到一起能得到如下的操作组合OP(p1, p2); OP(p0, p1); OP(p1, p2); OP(p3, p4);OP(p0, p3); OP(p2, p3); OP(p1, p4);OP(p1, p2); OP(p3, p4);这里只有9个算子实际拿数据测试他们确实是足以完成5*5的一个排序的所以opencv的数据集合github的代码组合在一起好像就能解释了99这个数据了。不过我们观察ravkum的那个算子的排布感觉又不是这个样子整体好混乱的先不管我们就按照刚才了解的sorting by lines - sorting by columns - sorting main diagonal处理看是否能有进一步的处理空间。首先sorting by lines这个没有啥好优化的必须完整的进行下一部 sorting by columns就有发挥的空间了我们看上面的列举的数据// [ 20, 10, 1, 6, 8 ] [ 20, 10, 8, 6, 1 ] [ 110, 72, 50, 48, 36 ] [ * , * , *, *, 36 ]// [ 32, 5, 40, 100, 60 ] [ 100, 60, 40, 32, 5 ] [ 100, 60, 40, 32, 7 ] [ * , * , *, 32, * ]// [ 14, 3, 22, 26, 68 ] -- [ 68, 26, 22, 14, 3 ] -- [ 80 , 30, 22, 14, 5 ] -- [ * , * , 26, * , * ]// [ 110, 12, 30, 7, 11 ] [ 110, 30, 12, 11, 7 ] [ 68 , 26, 12, 11, 3 ] [ * , 22, * , * , * ]// [ 72, 48, 36, 50, 80 ] [ 80, 72, 50, 48, 36 ] [ 20 , 10, 8 , 6 , 1 ] [ 20, * , * , * , * ]sorting by columns的目的是为了获取对角线的那五个数可以考到第一列那个20实际上是第一列的最小值而第五列的36实际是该列的最大值因此这两列是完全不需要进行完整的排序的只要找到的最小和最大值就可以这样就节省了很大的一部分计算了。第二列和第四列其实就是找到第二个最小值和第二个最大值这个也不需要进行完整的排序我们观察的我们的冒泡排序的4行算子第一行OP(p0, p1); OP(p1, p2); OP(p2, p3); OP(p3, p4);处理完成后其实p4就是最大值或者最小值了取决于op的操作这个时候我们只要求p0/p1/p2/p3中的最大值或者最小值就可以了而不用继续进行后续的排序了。基本上节省了一半的排序操作。第三列本身就是求中值的过程这里也可以用类似上面的操作只不过这个是要进行冒泡的前两行操作OP(p0, p1); OP(p1, p2); OP(p2, p3); OP(p3, p4);OP(p0, p1); OP(p1, p2); OP(p2, p3);此时p4是最大值p3是次最大值因此只要比较p0/p1/p2中的最大值就可以获得中间值了这个减少的工作量就比较有限了。进行这样的优化测试比直接使用99次比较算子可以大概有个10%左右的提速。但是我们测试发现在有些情况下这个优化后的结果和原始的结果似乎不是完全一致而用严格的冒泡排序对25个数据进行排序后的结果表明原始的方式的结果才是正确的后面仔细研究发现其实几个地方的文档都有提及这个事情百度的AI的结果有这样一句话中心元素通常接近中值注意这里的接近。而shrtique的注释了也写到了This algorithm could make a mistake in one discret (one position)因此这样处理实际上是个近似的结果。以下是一些耗时的比较结果image可见Opencv还是蛮快的不过opencv有一个限制就是浮点的数据中值只支持3*3的或者5*5的。 而且这个函数线程数对耗时没有影响而我这里可以开多线程基本上一个线程就能提高一倍不大于物理核。说一个小技巧在这个加载一行5个数据的过程中对于浮点数的SSE优化普通的写法是__m128 P0 _mm_loadu_ps(First X);__m128 P1 _mm_loadu_ps(First X 1);__m128 P2 _mm_loadu_ps(First X 2);__m128 P3 _mm_loadu_ps(First X 3);__m128 P4 _mm_loadu_ps(First X 4);那么考虑到数据的特殊性其实可以用下面的操作比较过多的内存读写复制代码// V0 V1 V2 V3 V4 V5 V6 V7__m128 P0 _mm_loadu_ps(First X); // V0 V1 V2 V3__m128 P4 _mm_loadu_ps(First X 4); // V4 V5 V6 V7__m128 P1 _mm_castsi128_ps(_mm_alignr_epi8(_mm_castps_si128(P4), _mm_castps_si128(P0), 4)); // V1 V2 V3 V4__m128 P2 _mm_castsi128_ps(_mm_alignr_epi8(_mm_castps_si128(P4), _mm_castps_si128(P0), 8)); // V2 V3 V4 V5__m128 P3 _mm_castsi128_ps(_mm_alignr_epi8(_mm_castps_si128(P4), _mm_castps_si128(P0), 12)); // V3 V4 V5 V6复制代码这样只用加载2次内存其他的数据用CPU指令组合而成而上面的指令看上去很多实际上那个cast并不产生任何的物理指令他只是语法糖所以就只有一个_mm_alignr_epi8指令注意这个应用不可以直接扩展到AVX因为AVX不是把_mm_alignr_epi8直接扩展到8个浮点数。
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

怎么夸一个网站开发公司上海设计展2023

在数字内容创作领域,专有格式资源往往成为技术壁垒,而Wallpaper Engine的PKG打包格式和TEX纹理格式正是典型的挑战。通过逆向工程深度解析,RePKG工具成功解开了这些技术障碍,为资源开发者和壁纸创作者提供了全新的可能性。 【免费…

张小明 2026/1/13 2:36:57 网站建设

康巴什网站建设湛江网站排名优化

Linux 用户管理与操作指南 1. 系统状态查看与启动相关 在 Linux 系统中, last 命令可用于查看 wtmp 文件中的最新条目,展示用户登录和系统状态的变化。以下是使用 last 命令的示例输出: root pts/0 Mon Oct 9 14:58 still logged …

张小明 2026/1/10 17:53:10 网站建设

广州 深圳 外贸网站建设公司做盗版小说网站能赚钱不

BilibiliDown无损音频下载全攻略:从入门到精通的高品质音乐获取方案 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com…

张小明 2026/1/10 17:53:11 网站建设

做网站的项目介绍鞍山天乙网络推广有限公司

5分钟掌握LIBERO:开启终身机器人学习的革命性平台 【免费下载链接】LIBERO 项目地址: https://gitcode.com/gh_mirrors/li/LIBERO LIBERO是一个专门研究知识迁移和终身学习能力的机器人学习基准平台,旨在解决多任务和终身机器人学习中的核心挑战…

张小明 2026/1/9 20:15:05 网站建设

win10 网站建设软件有哪些济南做网站推广哪家好

一、现象透视:被遮蔽的求救信号深夜的书房里,孩子对着摊开的课本发呆,笔尖在草稿纸上划出凌乱的线条;客厅里,家长攥着刚打印的成绩单,焦虑地踱步——这是许多家庭的日常缩影。当孩子出现拒绝学习、藏起课本…

张小明 2026/1/10 17:53:10 网站建设

门户网站设计与开发应用之星 wordpress

Linux 服务器串口管理与拨号上网全攻略 在当今数字化时代,尽管高速宽带网络已经普及,但串口管理和拨号上网在某些场景下仍然具有重要的作用。本文将详细介绍如何通过串口控制台对 Linux 服务器进行管理,以及如何配置拨号上网服务。 1. 配置服务器以支持拨号管理 如果你希…

张小明 2026/1/10 17:53:13 网站建设