<span style="font-family: KaiTi_GB2312; font-size: 12px; background-color: rgb(255, 255, 255);">内存对齐函数(Core.cpp):</span>
可以参考:https://technet.microsoft.com/zh-cn/library/8z34s9c6
这个内存对齐函数式针对VS2015版,针对Linux系统可能需要相应的修改吧?对应的头文件是:<malloc.h>
/// <summary>
/// 分配内存函数,以32字节对齐。
/// </summary>
/// <param name="Size">需要使用的内存大小(以字节为单位)。</param>
/// <param name="ZeroMemory">内存数据是否进行清零处理 。</param>
/// <returns>返回所分配内存的指针,失败则返回NULL。</returns>
void *AllocMemory(unsigned int Size, bool ZeroMemory)   //  https://technet.microsoft.com/zh-cn/library/8z34s9c6
{void *Ptr = _aligned_malloc(Size, 32);    //考虑SSE,AVX等高级函数的需求,分配起始地址使用32字节对齐。其实_mm_malloc就是这个函数if (Ptr != NULL && ZeroMemory == true)memset(Ptr, 0, Size);return Ptr;
}

释放内存函数(FreeMemory):

/// <summary>
/// 释放内存。
/// </summary>
/// <param name="Ptr">内存数据的地址。</param>
void FreeMemory(void *Ptr)
{if (Ptr != NULL) _aligned_free(Ptr);      //  _mm_free就是该函数
}

按照指定的方式扩展各坐标的有理值

/// <summary>
/// 按照指定的边缘模式计算扩展后各坐标的有理值
/// </summary>
/// <param name="Length">原始序列的长度。</param>
/// <param name="Left">左侧需要扩展的长度。</param>
/// <param name="Right">右侧需要扩展的长度。</param>
/// <param name="Edge">边缘扩展的模式。</param>
/// <returns>返回扩展后对应的坐标。</returns>
int *GetExpandPos(int Length, int Left, int Right, EdgeMode Edge)
{if (Left < 0 || Length < 0 || Right < 0) return NULL;//不合适的输入返回NULLint *Pos = (int *)AllocMemory((Left + Length + Right) * sizeof(int), false);//创建大小为(Left+Length+Right)的整形的内存,并不做清零操作if (Pos == NULL) return NULL;//如果内存没有创建成功,就返回NULL。int X, PosX;//X为自变量,变化大小为Left+Length+Right,PosX未知for (X = -Left; X < Length + Right; X++)   {if (X < 0)    //如果X小于零           //扩展后左侧像素的处理{if (Edge == EdgeMode::Tile)   //重复边缘像素Pos[X + Left] = 0;    //左侧的部分赋值零,并且坐标由-Left到0变为了0到Left。else                          //做镜像数据{PosX = -X;           //PosX为X取整之后的值,比如最左边为—Left,PosX变为Leftwhile (PosX >= Length) PosX -= Length;// 当这个数值大于原来的长度(扩展前)的时候,PosX=PosX-LengthPos[X + Left] = PosX;}}else if (X >= Length)   //如果说X>=Length,也就是说对于扩展后右侧的数据处理{if (Edge == EdgeMode::Tile)         //重复边缘像素Pos[X + Left] = Length - 1; //坐标由[Length,Length+Right]变化为[Left+Length,Left+Length+Right],并且赋值为Length-1else                                //镜像处理{PosX = Length - (X - Length + 2);//while (PosX < 0) PosX += Length;Pos[X + Left] = PosX;}}else      //对于原像素的处理,值还是原来的值,坐标变化[0,Length]变化为[Left,Length+Left]{Pos[X + Left] = X;}}return Pos;
}
unsigned char  *ColSum, *Diff;
ColSum = (unsigned char  *)malloc(Width * Channel * sizeof(unsigned char )); //开辟行内存地址
Diff   = (unsigned char  *)malloc((Width - 1) * Channel * sizeof(unsigned char ));//开辟行内存地址-1

unsigned char 这样的数据类型:均值模糊的结果

int  *ColSum, *Diff;
ColSum = (int *)malloc(Width * Channel * sizeof(int )); //开辟行内存地址
Diff   = (int  *)malloc((Width - 1) * Channel * sizeof(int ));//开辟行内存地址-1
int型数据类型产生的均值模糊的结果:

修改开辟内存和数据类型
模糊半径为2没有乱七八糟的噪点,其余的模糊半径就会出现上图所示的模糊问题。
最后发现就是数据定义的时候的数据类型和内存对齐的问题,采用32位对齐。问题解决:

均值模糊调试遇到的问题相关推荐

  1. (12)高斯和均值模糊放到一起

    基本的样子展示 ============================= ========================================= 代码展示 =============== ...

  2. 【Unity Shader】屏幕后处理3.0:均值模糊和高斯模糊

    发现之前学习记录的太过详细,导致整理的过程占用太长的时间了,这篇之后博客重要的是掌握实现过程,关于基础的理论会更多的放上别人写得更好的文章. 参考:[Unity Shader编程]之十五 屏幕高斯模糊 ...

  3. 彻底弄懂高斯模糊,均值模糊和中值模糊

    文章目录 一.均值模糊 1.什么是均值模糊 2. 数字化图片演示 3. 真实图片演示 4. 补充:填充方式 二.中值模糊 1. 什么是中值模糊 2. 数字化图片演示 三.高斯模糊 一.均值模糊 1.什 ...

  4. Python图像增强之高斯模糊、中值模糊、均值模糊

    高斯模糊 import cv2def gauss_blur(img, ksize, sigma):'''高斯模糊:param img: 原始图片:param ksize: 高斯内核大小. ksize. ...

  5. Metal每日分享,均值模糊滤镜效果

    本案例的目的是理解如何用Metal实现均值模糊效果滤镜,均值模糊原理其实很简单通过多个纹理叠加,每个纹理偏移量设置不同达到一点重影效果来实现模糊; Demo HarbethDemo地址 实操代码 // ...

  6. 【OpenCv】图像模糊(均值模糊,高斯模糊,中值模糊,双边模糊)

    原理: 图像模糊又称为图像平滑,是图像处理中最简单和常用的操作之一,使用该操作就是为了给图像降低噪音.图像模糊处理包括:高斯模糊.均值滤波.中值滤波.双边滤波等.模糊滤波其实就是图像的卷积计算,通常这 ...

  7. 图像处理之快速均值模糊(Box Blur)

    from:http://blog.csdn.net/jia20003/article/details/7201069 图像模糊的本质, 从数字信号处理的角度看,图像模糊就要压制高频信号保留低频信号, ...

  8. OpenCV---高斯模糊(均值模糊的另一种)

    高斯分布: 高斯模糊的原理 一:图像产生高斯噪声循环代码实现(耗时) def clamp(pv): #使我们的随机值在0-255之间if pv > 255:return 255if pv < ...

  9. open cv均值 中值 高斯 双边高斯 滤波及模糊

    /* 模糊与消噪 模糊原理(线性滤波) ●Smooth/Blur 是图像处理中最简单和常用的操作之一 ●使用该操作的原因之一-就为了给图像预处理时候减低噪声 ●使用Smooth/Blur操作其背后是数 ...

  10. OpenCV+python:模糊操作

    模糊操作是图像处理中最简单和常用的操作之一,使用该操作的原因之一就为了给图像预处理时减低噪声. 模糊操作基于离散卷积计算: g(i,j)=∑k,lf(i+k,j+l)∗h(k,l)g(i,j) = \ ...

最新文章

  1. 【模板】割点(割顶)
  2. ARP协议抓包分析 -- wireshark
  3. linux vnc的小黑点和鼠标不同步_公欲善其事 | VNC的安装和使用
  4. 快速git本地项目到github的关键命令及执行步骤(附上idea到git的步骤)
  5. NB-IOT连接移动onenet平台流程
  6. 题库明细 使用C#开发数据库应用系统
  7. Multi_thread--Linux下多线程编程互斥锁和条件变量的简单使用
  8. Cesium学习系列汇总
  9. S5PV210体系结构与接口04:代码重定位 SDRAM初始化
  10. SEO优化:WordPress发布文章主动推送到百度,加快收录保护原创
  11. PHP数据结构之实现链式二叉树与遍历
  12. 敏捷项目管理之计划扑克游戏
  13. 全能电子地图下载器-获取离线地图瓦片的工具
  14. QCC,让在学校的我们感受公司的温暖
  15. CentOS 7下atime如何变化的问题(转)
  16. Downward paths
  17. macos下安装john the ripper并配置zip2john
  18. 决策引擎EngineX平台实践
  19. 基于STM32F407标准库串口DMA+空闲中断
  20. C# 每天定时执行任务(每天凌晨1点执行)

热门文章

  1. MySQL 浅谈NOT NULL和DEFAULT的关系
  2. 03. Use const whenever possible
  3. 计算机图形学全代码,计算机图形学作业参考代码
  4. matlab脉冲补偿,基于LabVIEW和Matlab的纳秒脉冲测量信号补偿研究
  5. union all动态表_教你在Power BI中轻松制作动态RFM客户价值模型
  6. return可以返回多个值_JDK10的新特性:var泛型和多个接口实现
  7. pygame检测精灵与精灵的碰撞_Pygame(三)--走出黑暗的洞穴(2)
  8. HTTP:一次完整的HTTP服务过程
  9. ElementUI:tree给节点添加icon图标
  10. 最简单的vscode使用入门教程