您的位置:首页 > 编程语言 > MATLAB

matlab 实现快速卷积操作 如高斯滤波/求图像梯度

2015-09-17 14:44 921 查看
图像处理程序经常会用到卷积操作,即用一个模板在图像上滑动并与模板下的图像内做

乘加操作,如高斯滤波。传统的做法是循环套循环的方式来写法,但在matlab中循环操作

很慢,为加快执行速度要尽量避免循环操作。

1:根据模板的尺寸[template_h,template_v],pad要处理的图像。

2:利用im2colstep函数,将原始图像中的每一块按列排布,组成template_h×template_v行size(im,1)*size(im,2)列的新图像矩阵。

3:将模板按列排布,并利用repmat函数扩展为template_h×template行size(im,1)*size(im,2)

列的新模板矩阵。

4:模板矩阵和图像矩阵做相应元素的乘法后,按照列方向求和,得到1行size(im,1)*size(im,2)列的新向量。

5:最后将新向量reshape成size(im,1)行size(im,2)行的处理后的图像。

 

Tips:

1:matlab中size(im,1)指的是行数,即列向量的size;size(im,2)指的是列数。sum(im,1)是在列

方向求和。

2.length返回尺寸较大的那一维的尺寸,如length(zeros(5,2)) = 5;
length(zeros(2,5)) = 5;

3.类型转换回自动对数据进行饱和处理,如uint8(300) = 255;uint8(-10) = 0;而C则不会。Matlab中的许多操作只对double型数据有效。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  matlab 图像处理