在Matlab中平滑图像矢量

时间:2014-06-24 19:46:20

标签: matlab image-processing

我有一张图片,我将其转换为矢量并绘制:

img = imread(image.png');
grayImage = rgb2gray(img);
grayImage(2:2:end,:)=fliplr(grayImage(2:2:end,:));

B = rot90(grayImage);
C = flipud(B);

[x,y]=size(C);
vector = reshape(C ,1,x*y);
plot(vector);

问题在于虽然我可以在视觉上看到波浪图案,但会发生很多噪音。通过噪声我的意思是信号迅速上下波动,最终形成正弦波,但我希望能够将每个尖峰的波峰彼此连接起来,以创建连续的波浪模式。如果有人理解我想要做的事情,我们将不胜感激。

提前谢谢。

2 个答案:

答案 0 :(得分:0)

不是100%肯定您提出的问题,但medfilt1中值滤镜功能可能是您正在寻找的内容,它是1D平滑滤镜。示例用法是:

vector_filt = medfilt1(vector);

查看http://www.mathworks.com/help/signal/ref/medfilt1.html上的文档和示例。

答案 1 :(得分:0)

我认为在矢量上执行高斯卷积可以解决您的问题。这是一个堆栈溢出问题的链接,它对如何在matlab中进行高斯卷积有一个非常好的答案:Gaussian Filter on a vector in Matlab