<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[PixelDemon的博客]]></title><description><![CDATA[千江有水千江月，万里无云万里天]]></description><link>https://blog.youkuaiyun.com/PixelDemon</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; PixelDemon]]></copyright><item><title><![CDATA[基于DCT变换图像去噪算法的终极优化（1920*1080灰度图单核约22ms）]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/156918949</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/156918949</guid><author>PixelDemon</author><pubDate>Tue, 13 Jan 2026 13:43:00 +0800</pubDate><description><![CDATA[优化后的DCT16*16共需要46次乘法72次加法，16*16的去噪程度更强，同样的Sigma参数结果会更加模糊，为了提高16*16的速度，也可以仿照8*8的方式，加大取样间隔，实际测试间隔调整为2个像素，对结果基本没影响，如果把间隔调整为4个像素，在加大的Sigma时，可以较为明显的看到局部的方格，这个应该是不能忍受的， 实际测试如果把间距调整为3个像素，其实结果和原始的还是能承受的，而且加速也很客观。现在年龄大了，感觉有的时候确实是折腾不动了，新的技术在不断发展，而我们依旧趴在老旧的技术上啃食。]]></description><category></category></item><item><title><![CDATA[[快速阅读十三] 11x11大小的中值滤波算法相关数据推导表。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/156210626</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/156210626</guid><author>PixelDemon</author><pubDate>Tue, 23 Dec 2025 09:42:00 +0800</pubDate><description><![CDATA[对于浮点数，实际测试，11*11的中值还是不要用这种方法了，包括9*9的也不要用，还不如直接用我💰几篇博文讲的那种纯C++的处理方式。实际测试呢，11*11的这个和任意半径那种方法的速度差异就不大了，对于SSE优化，反而是任意半径的速度要快些了，不过AVX版本速度依旧比任意半径的速度要快50%左右。注意：这个论文的方法不适合用普通的C++实现，太慢了，甚至在5*5的时候就比用任意半径那种方法的C++代码慢了。这个配合原始论文的5*5的以及上面提到的论文的7*7及9*9的基本就覆盖了小半径的范畴了。]]></description><category></category></item><item><title><![CDATA[[快速阅读十二] 5x5的浮点数据的中值滤波算法优化及相关记录。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/155867495</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/155867495</guid><author>PixelDemon</author><pubDate>Fri, 12 Dec 2025 15:34:00 +0800</pubDate><description><![CDATA[sorting by columns的目的是为了获取对角线的那五个数，可以考到第一列那个20，实际上是第一列的最小值，而第五列的36实际是该列的最大值，因此，这两列是完全不需要进行完整的排序的，只要找到的最小和最大值就可以，这样就节省了很大的一部分计算了。这样只用加载2次内存，其他的数据用CPU指令组合而成，而上面的指令看上去很多，实际上那个cast并不产生任何的物理指令，他只是语法糖，所以就只有一个_mm_alignr_epi8指令，注意，这个应用不可以直接扩展到AVX，因为AVX不是把。]]></description><category></category></item><item><title><![CDATA[SSE图像算法优化系列三十三：使用_mm_stream_si128加速 Memory-Bound（内存受限）类算法的执行速度。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/155867494</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/155867494</guid><author>PixelDemon</author><pubDate>Wed, 10 Dec 2025 15:33:00 +0800</pubDate><description><![CDATA[在高性能转置的文章中，作者分配了一个64*64字节的缓冲区，每次转置8*8的数据时，并没有把数据直接用_mm_storel_epi64写入到目的图像对应的位置，而是呢先写到这个64*64字节的缓冲区的合适位置，当处理完64*64个大小的块(8*8个8*8的小块)后，再从这个64*64的缓冲区的适当位置取数据，然后组合下一次性的写入目标地址同一行的64字节中，当目标地址符合16字节对齐时，使用_mm_stream_si128，不符合是，使用常规的_mm_storeu_si128保存数据。]]></description><category></category></item><item><title><![CDATA[Impulse Noise（图像脉冲噪音）的抑制和处理方法（提取自《现代图像处理算法教程》一书并做解释）。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/153665760</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/153665760</guid><author>PixelDemon</author><pubDate>Mon, 20 Oct 2025 10:10:00 +0800</pubDate><description><![CDATA[但是作者在这里做了一个特别的处理，即区域面积大于M时，我们可以额外多做一个判断，即在这个区域里如果有和Light值相同的像素，则标记相同像素的那个位置，并且下一次处理那个位置时检查这个标记，如果已经有了值，则跳过这个像素不处理，这样就能节省大量的时间，这是因为，如果在同一个联通区域里的两个点，具有相同的色阶值，则分别以他们为中心进行区域生长时的结果肯定是一模一样的，因此，后面就完全没有必要再次进行重复的生长了。这样就记录了图像中不同色阶的位置信息，并具有一定的统计和排序意义。]]></description><category></category></item><item><title><![CDATA[传统算法之Canny亚像素边缘检测及将离散边缘点链接成线条的优化和探讨。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/153444114</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/153444114</guid><author>PixelDemon</author><pubDate>Thu, 16 Oct 2025 15:39:00 +0800</pubDate><description><![CDATA[边缘检测方面传统的算法中最为经典的就是Canny算法，但是标准的Canny是不具有亚像素精度的，而且得到的结果是一堆离散的边缘点，提取亚像素的方式有很多种，这个在网络上还有一些资料，而如何将离散点链接成一根一根的线条，我一直没有什么思路，最近偶然又有朋友给我推荐了一片文章：A Sub-Pixel Edge Detector an Implementation of the Canny /Devernay Algorithm及其配套的代码，终于完了我这个梦，相关论文及代码可以从。具体可以看下论文的有关描述。]]></description><category></category></item><item><title><![CDATA[[快速阅读十一] 伊拉克团队的TAGC（低光增强效果）算法实现。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/149995632</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/149995632</guid><author>PixelDemon</author><pubDate>Wed, 06 Aug 2025 16:30:00 +0800</pubDate><description><![CDATA[至于算法的速度并不像有些文章里说的可以满足4K视频实时增强的，虽然上面提供的代码只是示意代码，可以进行大量的优化，但是最后的pow函数是个非常耗时的过程，而且似乎没有设么好的办法去避免这个计算，不算前面文章那个pow(x,1.5)可以转换为x * sqrt(x)。AGC的核心思想非常巧妙：它通过分析图像的亮度分布，自动计算出最适合的伽马校正参数。不过这个点和我一样还在研究传统算法的，又是伊拉克的团队，这份精神还是值得表扬的。效果吗，确实能做到作者论文里的效果的，说明作者是没有作假的。]]></description><category></category></item><item><title><![CDATA[[快速阅读十] 浮点数据的中值模糊及其优化方法。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/149820040</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/149820040</guid><author>PixelDemon</author><pubDate>Thu, 31 Jul 2025 15:40:00 +0800</pubDate><description><![CDATA[可是，我们如果还是回到排序上去，我们把局部的浮点数进行排序，然后进行同样的编号，编号后的数据不就是整形数了吗，如果对这些整形数进行中值计算，得到的中值不就是真正的中值在浮点有序数列中的索引吗，这样不就可以借助整形数据的中值算法进行浮点的中值计算了吗。然后把这个编号理解为需要排序的数据，进行中值排序，得到的中值数据为3，这个3即为索引值，在排序去重的数据列，找到索引为3的值，即300.6作为最终的中值。其他半径的了，怎么办，浮点数嘛，不能使用直方图，而且数据范围也很广，不像8位或者16位数据范围都是有限的。]]></description><category></category></item><item><title><![CDATA[【16位RAW图像处理五】任意位深16位图像的中值模糊快速实现及其应用。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/149793052</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/149793052</guid><author>PixelDemon</author><pubDate>Wed, 30 Jul 2025 17:00:00 +0800</pubDate><description><![CDATA[整体来说，这个median-blur也是基于直方图的操作，先统计第一个位置的直方图，然后依据直方图计算出中值，并记录对应的中值统计累加量，对于下一个像素，更新直方图，更新完成后不是直接用所有直方图的信息来计算中值，而是依据前一次中值的信息，在其附近搜索新的中值，因为对于图像来说，不管是8位还是16位的，相邻的位置中值其实不会差异很大，因此在旧的中值处搜索新的中值，将是一个效率很高的过程。当然这个时候获得中值的值不是真正的像素值，而是一个索引，而根据这个索引结合上述排序后的数据，则就可以获取真正的像素了。]]></description><category></category></item><item><title><![CDATA[[快速阅读十]简易的文字图像周边突兀彩色异常区域去除算法。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/148127662</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/148127662</guid><author>PixelDemon</author><pubDate>Wed, 21 May 2025 17:48:00 +0800</pubDate><description><![CDATA[今天朋友给了一些拍照的文字图像，由于噪音以及JPG编码等因素的影响啊，在线条、文字等边缘的部位放大后查看可以看到有明显的彩色的斑点，这个对于后续的识别和处理都是不利的，因此，需要在进一步处理前把他们给去除掉，这里经过测试提出一个简单的算法，经过测试，还是有一定的效果的。这个嘛，首先得看看我现有的算法是否有比较合适的结果的，找来找去，也就看到有个Deinterlace(去除交错)有点意思，但是观察呢发现，有几个问题，一个是整体变得模糊了一些，第二呢，就是一些不需要改变的区域也改变了。]]></description><category></category></item><item><title><![CDATA[【工程应用十】 基于Hessian矩阵的Frangi滤波算法 == 血管图像增强 == Matlab中fibermetric函数的自我实现、加速和优化。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/148020649</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/148020649</guid><author>PixelDemon</author><pubDate>Fri, 16 May 2025 15:29:00 +0800</pubDate><description><![CDATA[后面某一刻，我就在想，因为高斯模糊或者或其他的模糊，都会把图像的细节减少，把尖锐的地方磨平，因此，模糊的Sigma越大，在离散化计算梯度的时候，如果使用字节版本的模糊呢，由于现相关领域内的像素差异实际上很小了(由浮点数据裁剪到字节数据时丢失了很多信息)，因此，就会出现较大的误差，导致趋势对，而结果不够完美。第一，这里直接用的字母C作为返回值，这个是一种遥相呼应，第二，这个函数计算的是特征值的最大值，和前面的公式变量S精密相关，而S又和C在计算时绑定在一起，因此，他应该就是C的一个外在表现。]]></description><category></category></item><item><title><![CDATA[[快速阅读九] 自适应中值滤波及保守滤波在去除椒盐噪音或脉冲噪音上的应用。...]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/143497781</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/143497781</guid><author>PixelDemon</author><pubDate>Mon, 04 Nov 2024 12:32:00 +0800</pubDate><description><![CDATA[　　这两个滤波器也是很久前就看过的，最近偶然翻起那本比较经典的matlab数字图像处理(冈萨雷斯)书，里面也提到了这个算法，觉得效果还行，于是也还是稍微整理下。
　　为了自己随时翻资料舒服和省事省时，这个算法的原理我们还是把他从别人的博客里搬过来吧： 
　　摘自：图像处理基础(2)：自适应中值滤波器(基于OpenCV实现)
　　自适应的中值滤波器也需要一个矩形的窗口Sxy，和常规中值滤波器不...]]></description><category></category></item><item><title><![CDATA[[快速阅读八] Matlab中bwlookup的实现及其在计算二值图像的欧拉数、面积及其他morph变形中的应用。...]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/143223862</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/143223862</guid><author>PixelDemon</author><pubDate>Thu, 24 Oct 2024 08:53:00 +0800</pubDate><description><![CDATA[　　以前看过matlab的bwlookup函数，但是总感觉有点神秘，一直没有去仔细分析，最近在分析计算二值图像的欧拉数时，发现自己写的代码和matlab的总是对不少，于是又去翻了下matlab的源代码，看到了matlab里实现欧拉数的代码非常简单，如下所示：

if n==4
    lut = 4*[0 0.25 0.25 0 0.25 0  .5 -0.25 0.25  0.5  0 -0....]]></description><category></category></item><item><title><![CDATA[【16位RAW图像处理四】 HDR->LDR：Matlab中tonemapfarbman函数的解析和自我实现。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/142800367</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/142800367</guid><author>PixelDemon</author><pubDate>Wed, 09 Oct 2024 12:47:00 +0800</pubDate><description><![CDATA[　　最近受朋友的委托，想自己实现Matlab里的一个HDR转LDR的函数，函数名是tonemapfarbman，乘着十一假期，稍微浏览下这个函数，并做了一点C++的实现和优化。
　　为了看到这个函数的效果，需要至少matlabR2018b及其以上的版本。
　　首先，我们下载了matlab帮助文档中提到的该算法对应的论文：Edge-Preserving Decompositions for M...]]></description><category></category></item><item><title><![CDATA[【工程应用十二】Bayer图像格式中Hamilton-Adams及Zhang Wu 基于LMMSE算法的Demosaic过程优化。...]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/141834257</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/141834257</guid><author>PixelDemon</author><pubDate>Mon, 02 Sep 2024 09:00:00 +0800</pubDate><description><![CDATA[　　Demosaic，中文直接发翻译为去马赛克， 但是其本质上并不是去除马赛克，这让很多第一次接触这个名词或者概念的人总会想的更多。因此，一般传感器在采集信息时一个位置只采集RGB颜色中的一个通道，这样可以减少采集量，降低成本，由于人的视觉对绿色最为敏感，所以一般情况下，绿色分量会比红色和蓝色分量多一倍的信息，这样，根据RGB不同的位置排布，就产生了RGGB、GBRG、GRBG、BGGR四种常用...]]></description><category></category></item><item><title><![CDATA[【工程应用十一】基于PatchMatch算法的图像修复研究（inpaint）。]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/141441831</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/141441831</guid><author>PixelDemon</author><pubDate>Thu, 22 Aug 2024 16:14:00 +0800</pubDate><description><![CDATA[  这个东西是个非常古老的算法了，大概是2008年的东西，参考资料也有很多，不过基本上都是重复的。最近受一个朋友的需求，前后大概用了二十多天时间去研究，也有所成果，在这里简单的予以记录。
   图像修复这个东西目前流行的基本都是用深度学习来弄了，而且深度学习的效果还是非常不错的(大部分情况下优于传统算法)。
   PatchMatch本身并不是图像修复的算法，他只是描述了一套流程用于快速在两幅图...]]></description><category></category></item><item><title><![CDATA[【工程应用十】基于十六角度量化的夹角余弦相似度模版匹配算法原理解析。...]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/140481592</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/140481592</guid><author>PixelDemon</author><pubDate>Tue, 16 Jul 2024 11:31:00 +0800</pubDate><description><![CDATA[　　传统的基于边缘信息的模板匹配其计算得分的公式如下所示：　　　　　
　　　　　　　　
  
　　这是一个累加公式，对于原图的每一个有效像素位置，以其为中心或左上角起点(图像中的坐标一般是X方向从左向右，Y方向从上到下)，在原图中覆盖模板宽度和高度大小的范围内，按照模板有效特征点的位置和梯度信息，逐点和原图对应位置的梯度信息进行上述累加符号内的计算，在进行完累加后，再次求平均值得到有效像...]]></description><category></category></item><item><title><![CDATA[[快速阅读七] Halcon里emphasize函数相关资料.]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/139933266</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/139933266</guid><author>PixelDemon</author><pubDate>Tue, 11 Jun 2024 09:37:00 +0800</pubDate><description><![CDATA[　　时不时有人问我我的SSE优化Demo里emphasize(边缘强调)的原理是啥，有没有写博客，其实不是我不愿意写博客，而是那个东西太过于简单，我不想写博客。但是耐不住问的人多了，我就干脆复制点资料放在博客里吧，省的每次我还要去找点资料复制给人家。
　　 这个东西其实是Halcon里的一个算子，我也是直接借用了他的一个英文名字并翻译的，在Halcon的帮助文档里，其说法如下所示：

empha...]]></description><category></category></item><item><title><![CDATA[[快速阅读六] 统计内存数据中二进制1的个数（SSE指令集优化版）.]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/139349163</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/139349163</guid><author>PixelDemon</author><pubDate>Thu, 30 May 2024 12:18:00 +0800</pubDate><description><![CDATA[　　关于这个问题，网络上讨论的很多，可以找到大量的资料，我觉得就就是下面这一篇讲的最好,也非常的全面：
　    统计无符号整数二进制中 1 的个数(Hamming Weight)
　　在指令集不参与的情况下，分治法速度最快，MIT HAKMEM 169 算法因为最后有一个mod取余操作，速度要稍微慢一点，256元素的查表算法速度要次之，当然，其实要建议那个256元素的表不要使用int...]]></description><category></category></item><item><title><![CDATA[【工程应用九】再谈基于离散夹角余弦相似度指标的形状匹配优化（十六角度量化+指令集加速+目标只有部分在图像内的识别+最小外接矩形识别重叠等）...]]></title><link>https://blog.youkuaiyun.com/PixelDemon/article/details/137279613</link><guid>https://blog.youkuaiyun.com/PixelDemon/article/details/137279613</guid><author>PixelDemon</author><pubDate>Tue, 19 Mar 2024 09:06:00 +0800</pubDate><description><![CDATA[　　继去年上半年一鼓作气研究了几种不同的模版匹配算法后，这个方面的工作基本停滞了有七八个月没有去碰了，因为感觉已经遇到了瓶颈，无论是速度还是效率方面，以当时的理解感觉都到了顶了。年初，公司业务惨淡，也无心向佛，总要找点事情做一做，充实下自己，这里选择了前期一直想继续研究的基于离散夹角余弦相似度指标的形状匹配优化。
　　在前序的一些列文章里，我们也描述了我从linemod模型里抽取的一种相似度指...]]></description><category></category></item></channel></rss>