未完待续(源代码已完成,因为作业还没
结束,因此不便于上传源代码,后续会补
上的)....
#在做并行计算的时候有这么一个作业
从bmp图片文件中读取图像像素数据,使用5×5的卷积核,步长为1,对该图像进行卷积运算,MPI并行实现图像卷积过程。请同学们认真查看附件,明确要求。
要求:
1. 将卷积核和卷积后的像素矩阵输出到文本文档以供验证。
2. 计算程序并行部分的运行时间!!在该程序段首尾加入返回时间戳的函数并显示各个核的运算时间
3. 给出并行部分的整体运行时间并对比2核与4核的并行加速比与效率。
4. 写一份实验报告说明实验思路,实验过程,创新和优化部分
5. 程序测试环境为linux
1. 卷积边缘点时,采用空白点按照0处理,对应于opencv的border_constant模式。
2. 卷积核统一使用5x5高斯卷积核。图片现场给定。宽度会是32的整数倍。
3. 结果允许与实际结果有绝对值为1的误差
卷积核是什么
卷积是图像处理常用的方法,给定输入图像,在输出图像中每一个像素是输入图像中一个小区域中像素的加权平均,其中权值由一个函数定义,这个函数称为卷积核,
比如说卷积公式:R(u,v)=∑∑G(u-i,v-j)f(i,j) ,其中f为输入,G为卷积核。
步长是什么
请参考下面文章里面的示例3
卷积如何计算
以下面的动态图通俗直观地来讲,底层的虚线矩阵就代表原始矩阵,阴影矩阵就代表卷积核,阴影矩阵每次移动一格,意思就是步长是1,上层的实线有颜色的矩阵就是输出矩阵,输出矩阵的每个元素的计算方法就如动态图所演示的最好再参考一下这篇博文帮助理解计算原理(重点看后面的图片)以及填充边
1、像素数量不变full,假定输入矩阵为x*x, 卷积核为m*m,则输出矩阵为(x-3+1+(3-1))*(x-3+1+(3-1)),也就是x*x
2、假定输入矩阵为x*x, 假定输入矩阵为x*x, 卷积核为m*m,则输出矩阵为(x-3+1+(3-2))*(x-3+1+(3-2)),也就是(x-1)*(x-1)
........
m、假定输入矩阵为x*x, 假定输入矩阵为x*x, 卷积核为m*m(3*3为例),则输出矩阵为(x-3+1+(3-3))*(x-3+1+(3-3)),也就是(x-2)*(x-2)
高斯卷积核的生成(C/C++代码)
高斯公式如下