声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1771|回复: 12

[滤波] 这个该怎么滤波?

[复制链接]
发表于 2008-2-23 20:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x

                               
登录/注册后可看大图

如上图所示,图中描述的是一个椭圆(知道椭圆方程)滑过一已知路径(椭圆不转动),求椭圆圆心轨迹
,换句话就是求椭圆与已知路径的接触时的最低点的坐标。
我考虑过用椭圆去包络这段已知路径,其实好像这样表述更正确一些,但是不知道包络后的圆心轨迹线怎么得到?
可以用滤波吗?该怎么做到!请指点!谢谢!
回复
分享到:

使用道具 举报

 楼主| 发表于 2008-2-24 09:47 | 显示全部楼层

图片可见了

如上图所示,图中描述的是一个椭圆(知道椭圆方程)滑过一已知路径(椭圆不转动),
求椭圆圆心轨迹
,换句话就是求椭圆与已知路径的接触时的最低点的坐标。
不知道如何下手,请指教!

示意图

示意图
示意图1.jpg
发表于 2008-2-27 00:28 | 显示全部楼层
有点像形态学滤波
matlab 没有对一维信号的形态学函数我找了下 好像网上也没有
所以用它本来有的对二维图像的形态学函数试一下




[ 本帖最后由 bluedecember 于 2008-2-27 01:39 编辑 ]
untitled.JPG
untitled.JPG
 楼主| 发表于 2008-2-27 13:50 | 显示全部楼层
非常感谢!其实我想做的就是利用椭圆的外形来做几何学上的滤波。对于您所提及到的二维图像的形态学函数能具体的介绍一下吗?推荐基本参考书吧。我以前没有做过滤波,对于您所提到的更不了解。
发表于 2008-2-27 16:37 | 显示全部楼层
%路径y,采样点距为t
t=0:0.01:5;
y=0.2*sin(2*pi*3*t)+0.8*(t-3).^2;
ymin=min(y);ymax=max(y);
figure;
subplot(3,1,1);plot(y);title('noised signal');
axis([0,500,ymin,ymax]);
axis off


%转换为二值图像表示
n=length(y);
avg=(ymax-ymin)/n;
z=round(y./avg);
m=max(z)-min(z)+1;
I=zeros(m,n);
for i=1:n
    for j=1:max(z)-z(i)
        I(j,i)=1;
    end
end
subplot(3,1,2);
imagesc(I);title('转化为图像');axis off

%使用matlab中的Image Processing
SE=strel('disk',30);%定义一个圆盘膨胀结构元素
J=imerode(I,SE);
subplot(3,1,3);imagesc(J);title('形态学滤波');axis off
发表于 2008-2-27 16:38 | 显示全部楼层
matlab没有定义椭圆结构元素
这个可能要依据采样点距,椭圆半径,椭圆移动的步进 自己写
 楼主| 发表于 2008-2-27 18:59 | 显示全部楼层
非常感谢!
 楼主| 发表于 2008-3-1 12:24 | 显示全部楼层

回复 6楼 的帖子

谢谢您的精彩回复,不过我不知道怎么把这个二进制的图像文件在转化为数据文件?请您继续解答。谢谢!
 楼主| 发表于 2008-3-1 14:39 | 显示全部楼层
在你的程序的提示下,我好想想明白了,将二制图像在距证中的坐标还原回去,在乘上比例尺就好了。不过对于这种形态学滤波还是不大明白它的原理,使用一个个单元去历经他吗?能推荐几本参考书吗?谢谢!我自己做了几个简单的图形,比如说正方形,让椭圆去历经应该是有圆弧的,但是我得到的图像是一个变大了的长方形?怎么回事?
发表于 2008-3-2 20:24 | 显示全部楼层
我对一维形态学滤波也很感兴趣,但没有时间深入了解。所以上面写的程序是以方便为原则 借用图像工具箱的形态学算子做的一维滤波

你搜索 数学 形态学 这种书很多 从提出到现在已经 50年了。 你搞清楚 open 和 close的概念 剩下的 erode dilate 也很好理解,具体可以看matlab里的帮助
ISO16610系列里有morphology filter 的概念,应用 你可以找找看

至于最后一个问题 你贴上代码 来看看
 楼主| 发表于 2008-3-3 19:20 | 显示全部楼层
首先感谢您的一直关注和解答。具体的请见附件,我想把二制图像在还原成数据点的时候,这个比例尺在选区的时候我感觉差了点什么,因为前面转化成二制图像的时候,这个圆整后的图像在还原的
时候的截断误差怎么考虑?

[ 本帖最后由 xjzhang 于 2008-3-3 19:36 编辑 ]
 楼主| 发表于 2008-3-3 19:23 | 显示全部楼层
clear
clc
%路径y,采样点距为t
% t=0:0.01:2;
% y=0.2*sin(2*pi*3*t)+0.8*(t-3).^2;
t=0:0.01:6;
% % y=10*sin(2*pi*t);
y=[];
for i=1:length(t)
    if(t(i)<2)
        y(i)=0;
    elseif (t(i)<4)
        y(i)=10;
    else
        y(i)=0;
    end
end
ymin=min(y);ymax=max(y);
h=figure(1);
subplot(3,1,1);plot(y);title('noised signal');
axis([0,600,ymin,ymax]);
axis off

%转换为二值图像表示
n=length(y);
avg=(ymax-ymin)/n; %获得Y轴的比例尺
z=round(y./avg);
m=max(z)-min(z)+1;
I=zeros(m,n);
for i=1:n
    for j=1:max(z)-z(i)
        I(j,i)=1;
    end
end
subplot(3,1,2);
imagesc(I);title('转化为图像');axis off
%使用matlab中的Image Processing
SE=strel('disk',30,4);%定义一个圆盘膨胀结构元素
J=imerode(I,SE);
subplot(3,1,3);imagesc(J);title('形态学滤波');
axis off
out_y=[];
[M,N]=size(J);
for k=1:N
    for l=1:M
        if (J(l,k)==0)
        out_y(k)=(M-l).*avg;
        break
        end                 
    end
end
h1=figure(2);
plot(t,out_y,'b',t,y,'k');
axis([0,max(t),min(y),max(y)]);
矩形.jpg
发表于 2009-10-1 00:04 | 显示全部楼层
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-2 21:07 , Processed in 0.253949 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表