百度网站风格wordpress 春叶 主题

张小明 2025/12/31 20:48:15
百度网站风格,wordpress 春叶 主题,政务网站群建设需求调研表,中小企业上市公司名单在上面的英文版书籍中#xff0c;提出了一种去除脉冲噪音的方法#xff0c;所谓的脉冲噪声是影响单个的、随机选择的像素或相邻像素的组合#xff0c;而不是影响图像的所有像素#xff08;这个是高斯噪声的特征#xff09;。我们传统概念中提到的椒盐噪音其实只是脉冲噪音…在上面的英文版书籍中提出了一种去除脉冲噪音的方法所谓的脉冲噪声是影响单个的、随机选择的像素或相邻像素的组合而不是影响图像的所有像素这个是高斯噪声的特征。我们传统概念中提到的椒盐噪音其实只是脉冲噪音的一种特例脉冲噪音可以分暗脉冲噪声和亮脉冲噪声。暗噪声包含亮度低于其邻域亮度的像素或像素组而亮噪声则相反。抑制灰度或彩色图像中的脉冲噪声的问题相当复杂我们以暗噪声为例则需要自动检测图像中满足以下条件的像素的所有子集 S :1、子集 S 的所有像素必须具有低于或等于阈值 T 的亮度。2、子集 S 中的所有像素必须是连接在一起的。3、像素数即 S 的面积低于预定值 M 。4、不属于 S 但是与 S 的相邻的所有像素必须具有高于 T 的亮度。5、对于不同的子集 S 阈值 T 可以不同。这个问题很难因为阈值 T 是未知的。理论上在一个接一个地测试 T 的所有可能值的同时解决问题是可能的。然而这样的算法会非常慢。M. I. Schlesinger 在1997年提出了以下快速解决方案的想法:“We propose such a procedure that the “noise removing” with subsequent thresholding gives the same results as thresholding with subsequent commonly used noise removing in the binary picture. This equivalency holds for every threshold’s value.我感觉到难以翻译就直接用原文把。接着书本里提出了一个具体的算法我先不说具体的实现我把我写完算法后对该算法的理解先用文字表达出其核心的思想。以暗脉冲噪音为例其实现的方法为对图像的所有像素先从亮度高的像素开始依次寻找该像素周边领域里亮度小于或等于该像素的连续区域如果这个区域的面积小于预设的面积M则把这个区域内的所有像素都设置为和这个领域像素相接触的所有像素中的最小值显然这个最小值也要比这个区域内的任何像素都亮。处理完亮度最高的像素后在继续处理后续亮度逐渐降低的像素不但重复这个过程直到所有像素都处理完成。对于亮脉冲噪音则处理过程相反。因此整个过程只有一个外部参数即预设的面积当然暗脉冲噪音和亮脉冲噪音对应的预设面积可以不同。从以上的过程来看所谓的暗脉冲噪音噪音部位并不一定是很暗的像素只是相对来说暗一点比如一团像素值为253的像素如果周边都是255则只要他的面积小于M也就会被赋值为255。这个和我们传统的直观理解还是有所不同的这也是为什么我们去除暗脉冲噪音时为什么要从最亮的像素开始向暗像素逐步进行处理。从上述过程来看如果直接实现这样的定义则还是个非常耗时的过程因为1、需要从255每次递减一直到0为止256次遍历整个图像每次遍历时寻找到像素值等于循环变量的像素位置然后在该位置进行符合条件的连续区域查找。2、连续区域查找本身是个较为复杂的过程也是相当耗时。3、如果不进行256次遍历则需要对图像像素进行排序而且排序时还要带上图像坐标的X和Y信息。对于大图排序本身也是非常耗时的。因此文章中提出了几个供加速的过程也是非常有意义的事情。1为了避免排序或者256次递归首先利用直方图的有关属性并定义了一个二维数组来保存图像中各个色阶像素的有关信息二维数组的第一维范围从0到255表示色阶值或者说亮度值第二维的范围是动态的其大小是图像中具有该色阶或亮度像素的个数这样比如数组Index[light][10]是表示亮度等于light的所有像素的集合中的第十个像素的索引或者位置信息因此可以明显的看到这个数组的第二维的里所有元素相加的总和即为图像的像素个数。这样当从小亮度开始读取数组Index时第一维我们获得以亮度增加的顺序排序的像素的索引但是当以相反的方向读取时我们获得以亮度减少的顺序排序的像素的索引。那个书中的C#代码写的比较混乱我贴一段C的代码表示下上述过程的意思复制代码// 计算图像的直方图从而间接获取每个色阶在图像中的像素数for (int Y 0; Y Height; Y){unsigned char* LinePS Src Y * Stride;for (int X 0; X Width; X){Histgram[LinePS[X]];}}// 为每个色阶分配合适的内存for (int Y 0; Y 256; Y){if (Histgram[Y] 0){PosIndex[Y] NULL;}else{// 根据每个色阶的像素数分配合适的大小PosIndex[Y] (Point*)malloc(Histgram[Y] * sizeof(Point));if (PosIndex[Y] NULL){Status IM_STATUS_OUTOFMEMORY;goto FreeMemory;}}}// 再次把直方图数据赋值为0让其充当在循环中的计数器并且最终也恢复成正确的直方图数据memset(Histgram, 0, 256 * sizeof(int));for (int Y 0; Y Height; Y){unsigned char* LinePS Src Y * Stride;for (int X 0; X Width; X){int Light LinePS[X];// 第一个索引Light表示色阶第二个Histgram[Light]表示在Light色阶中对应的顺序// PosIndex[100][2]则就记录了图像中第三个色阶值为100的像素的位置当然这个排序的顺序是按照先行后列的Point* P PosIndex[Light][Histgram[Light]];P-X X;P-Y Y;// 这个亮度的索引增加1Histgram[Light];}}复制代码首先遍历一次图像进行直方图统计这样就能知道图像中每个色阶像素的个数然后根据这个个数分配合理的内存并再次遍历图像根据每个位置的色阶把对应的位置信息填充到二维数组中或者二维指针。这样就记录了图像中不同色阶的位置信息并具有一定的统计和排序意义。2、为了避免不必要的计算我们接着计算下图像的实际最大值和最小值。这个可以直接借用直方图实现。复制代码// 求取图像的最大值和最小值int MinValue 255, MaxValue 0;for (int Y 0; Y 256; Y){if (Histgram[Y] ! 0){MinValue Y;break;}}for (int Y 255; Y 0; Y--){if (Histgram[Y] ! 0){MaxValue Y;break;}}复制代码3、接下来就是关键了我们以处理暗脉冲噪音为例借助前面的处理步骤我们能轻松的从最亮的像素开始向暗像素开始处理复制代码// 去除暗噪音从最大值减开始循环for (int Light MaxValue; Light MinValue; Light--){// 扫描所有原图中像素值等于Light的所有像素位置// Histgram[Light]为0的像素则直接会不进行循环的for (int Y 0; Y Histgram[Light]; Y){Point* P PosIndex[Light][Y];int Pos P-Y * Stride P-X;//......................}}复制代码最外一重循环的意思很明显而第二重Y循环从下标0开始一直到Histgram[Light] - 1因为Histgram[Light]中实际保存的就是图像中色阶为Light的像素的总个数在PosIndex[Light][Y]中在保存了各个色阶为Light像素的坐标位置。那么在这个循环内部可以参考书本中的BreadthFirst_D函数核心就是以当前点为种子点按照领域的像素小于等于Light的原则进行区域生长在生长的过程中如果遇到了大于Light的领域信息则要用一个变量记录下这些区域的最小值Min当生长过程中发现生长的区域面积已经大于预设值M了则可以立即停止生长了。否则继续下去直到周边没有任何像素能继续生长了。这个生长的过程可以用队列方便的视线当然也有数组的方式实现的。对一个像素生长完成后如果区域面积是满足小于M的要求的则用前面记录的M值把这些区域的像素都赋值为M实现噪音的去除。如果大于M了则可以不管他继续下一步处理。但是作者在这里做了一个特别的处理即区域面积大于M时我们可以额外多做一个判断即在这个区域里如果有和Light值相同的像素则标记相同像素的那个位置并且下一次处理那个位置时检查这个标记如果已经有了值则跳过这个像素不处理这样就能节省大量的时间这是因为如果在同一个联通区域里的两个点具有相同的色阶值则分别以他们为中心进行区域生长时的结果肯定是一模一样的因此后面就完全没有必要再次进行重复的生长了。书本作者提供的代码BreadthFirst_D函数里面用了一系列的位操作技巧个人感觉有点炫技的嫌疑直接用标记数组起来方便多了。对于彩色图像这个算法是不能分通道处理的因为单独通道处理可能导致每个点的通道不会被同样处理结果就是会出现一些异常的彩色斑点一般都是用各个彩色像素的灰度信息来作为特征进行计算然后统一处理三通道数据。我们在理解书本原理的基础上自行进行了C编码并对书本提供的两个图片进行了测试均取得了不错的结果1 4wechat_2025-10-18_141544_774 444一幅灰度图像一幅彩色图像暗脉冲和亮脉冲的大小都设置为25像素右图为去燥后的处理结果从结果看非常有效的去除了一些瑕疵而且较为关键的一点是基本上我目前研究过的其他的传统的去燥算法似乎都达不到类似的较为完美结果。对于典型的椒盐噪音因为他本身就属于脉冲噪音因此肯定是能完美出来好的 如下面两图所示:349293-20241104121504686-1464516871 545454999 5555需要说明的是即使是这样做了优化这个去除噪音的速度呢还是不很很快而且速度除了和图像大小有关外还和图像的内容有关也就是说同一样大小的一幅图处理速度可能会有几倍的差异。另外在填充这一块也有一些内容值得考虑目前是使用领域边缘中最小的值或最大的值填充整个符合条件的领域那是否可以考虑用领域边缘的平均值呢或者用这个值和领域内的图像做个融合呢这样就可以适当的保留领域内的一些边缘信息而不是都变为同一个值。这个算法本身不算什么惊艳或者高深算法但是这种处理的方式和方法和一般的图像处理步骤还是有较大的区别的也可以说是独树一帜吧。也许这种思路也可以扩展到一些其他的算法应用中去。该算法目前也已经集成到我的SSE优化的算法集合里https://files.cnblogs.com/files/Imageshop/SSE_Optimization_Demo.rar?t1660121429image
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

做视频播放网站 赚钱手机网站比例

Windows Phone 开发中的手势处理与应用 在 Windows Phone 开发中,手势处理是实现良好用户交互体验的重要部分。本文将详细介绍如何利用操作事件和 GestureService 来处理各种手势,以及如何实现元素的拖动、轻拂、旋转和缩放等操作。 操作事件处理 操作事件可以用于处理元素…

张小明 2025/12/30 9:26:54 网站建设

电子商务网站设计心得建筑企业登录建设厅网站密码

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

张小明 2025/12/30 9:52:34 网站建设

做众筹网站需要什么条件吴忠市建设局官方网站

上篇文章介绍了需求的来源和需求方的痛点,这些痛点会影响到应用系统开发的质量、时间和费用。 今天我们再来看看开发,看看开发的痛点和开发者的痛点。 这里的开发方是指直接参与应用系统开发的人员,主要是项目组人员,至于软件公司…

张小明 2025/12/30 10:34:26 网站建设

动态站 网站地图怎么做手机app下载网

还在为错过Twitch直播掉落而懊恼吗?是否厌倦了长时间挂着浏览器却忘记领取奖励?这款革命性的自动化工具将彻底改变你的游戏收集体验,让你在后台静默收获珍贵掉落,无需任何手动操作。 【免费下载链接】TwitchDropsMiner An app tha…

张小明 2025/12/30 10:35:22 网站建设

可以自己企业网站制作怎么做电商新手入门

在数字化转型加速的2025年,企业网络边界日益模糊,网络准入控制(NAC)已成为企业网络安全体系的关键组成部分。本文将为您深入解析网络准入控制技术,并详细介绍2025年最值得关注的6款主流解决方案。1.互成网络准入系统作为国内网络准入与违规外…

张小明 2025/12/30 11:06:39 网站建设

农业公司网站建设江宁招网站建设58

Qwen3-32B Docker镜像部署:5分钟跑起大模型 你有没有经历过这样的尴尬——项目到了关键节点,急需一个能理解复杂逻辑、写出高质量代码的大模型来辅助决策,结果试了几个开源方案,不是“上下文太短”就是“回答驴头不对马嘴”&…

张小明 2025/12/30 11:53:00 网站建设