gefei1989 发表于 2011-6-2 16:49

求助二维BEMD的使用

    前段时间做一维EMD的分解,其间遇到很多绞尽脑汁的问题,看过论坛上很多帖子之后,一个个问题迎刃而解,先谢谢各位热心的大侠。最近转移到了二维BEMD的研究,一开始便遇到了大难题,在门口徘徊半个月都进不去,着急啊,所以发帖求助,还希望大家多多帮忙。
    首先,在论坛上找到了二维BEMD的程序(谢谢各位的共享),程序包括BEMD.m、BEMD_RBF.m、Env.Rbf.m、moy_env.m。将这些m文件加载到work下之后,发现二维并不是一维那么简单,然后又在论坛上搜索之后发现,要下载FastRBF,并且需要FastRBF.lic这个文件,两个都搞定之后,开始使用程序。因为不知道二维程序该如何使用,所以就按照一维的思路摸索。在BEMD.m里发现有这样几句话
nb_modes=6; % number of modes
ext_lpe=1   % if ext_lpe==1 interpolation by extrema
            % else                     by crest lines
SDmax=1;            %   standard deviation
precision=0.0003;   %   precision of stop criteria
t1=150;
t2=150;
t3=0;
t4=0;
I=imread('E:\JC\Images\Decomposition\barbara.gif');

I=mat2gray(double(I));
%figure, imagesc(I), colormap(gray), title('image'),truesize, drawnow
I=double(I)*255;
figure, imagesc(I), colormap(gray), title('image'),truesize, drawnow
=BEMD_RBF(I,nb_modes,SDmax,ext_lpe,precision);

所以就凭着感觉输入了下面的程序,
>> a=imread('F:\image\nadal.bmp');
>> a=mat2gray(double(a));
>> a=double(a)*255;
>> =BEMD_RBF(a,6,1,1,0.0003);

结果matlab显示
Interpolation par les extrema
??? Undefined command/function 'fastrbf_fit'.
Error in ==> Env_Rbf at 64
    rbfmin=fastrbf_fit(datamin,0.00000001);
Error in ==> BEMD_RBF at 47
      =Env_Rbf(I,ext_lpe);

    也在论坛上搜过,发现可能是因为matlab的版本不对,我用的是matlab7.0版本,想请教下应该换成哪个版本?并且之前输入的matlab口令也可能是错的,还请赐教应该如何写?

chenlu1986 发表于 2011-6-3 08:32

回复 1 # gefei1989 的帖子

你工作路径选对了吗?
程序没有问题,但是要注意几个问题:FastRBF最高支持matlab2006b版本;申请的FastRBF.lic最多允许处理图片的像素点数不能超过170*170等。
你再试试。

gefei1989 发表于 2011-6-3 11:30

回复 2 # chenlu1986 的帖子

多谢,我回去试一下,突然忘了能处理的点数最大是170*170,那张图片肯定大了,另外工作路径是什么呢?不太清楚。不过我感觉,应该是没问题的。之前也在网上找过低版本的matlab,但是很不好找,有点郁闷啊。

chenlu1986 发表于 2011-6-3 14:54

回复 3 # gefei1989 的帖子

找低版本?你的那个也可以的啊。我现在用的是2006b是最高能用的版本。
我是把4个函数和FastRBF相关文件放在一起,工作路径就是选择这个。

gefei1989 发表于 2011-6-6 16:19

回复 4 # chenlu1986 的帖子

不好意思,之前不清楚matlab的版本和编号的关系,见笑了。我把图像缩小之后,只有150*126,然后还是按照上面的语句进行处理,结果还是出现了上面的问题。另外重新设置了工作路径。实在不知道哪里出错了

gefei1989 发表于 2011-6-6 20:26

回复 4 # chenlu1986 的帖子

(*^__^*) 不好意思,之前的工作路径确实出现了一点问题,我把FastRBF安装到了当前工作目录下,发现还需要把toolbox和tutorial文件夹里的文件全部移到work下,虽然work里的文件乱了点,但好歹没有出现上面的问题了。但是新的问题出现:
我输入的程序为:
a=imread('F:\image\nadal.jpg');
>> a=mat2gray(double(a));
>> a=double(a)*255;
>> =BEMD_RBF(a,6,1,1,0.0003);

提示错误为:
Interpolation par les extrema
Fitting RBF
Finished fitting RBF

Evaluating RBF on grid
Finished evaluating RBF on grid

Fitting RBF
Finished fitting RBF

Evaluating RBF on grid
Finished evaluating RBF on grid

??? Error using ==> unknown
Matrix dimensions must agree.

Error in ==> moy_env at 26
IDif=I-IM;      % Difference entre l'image de d閜art et l'image moyenne

Error in ==> BEMD_RBF at 49
      =moy_env(I,Ienv_S,Ienv_I,SDmax,SDmax_prec,precision);
还请赐教

chenlu1986 发表于 2011-6-7 08:54

回复 6 # gefei1989 的帖子

你的nadal.jpg图片是不是三维的?即读进去之后是150*126*3类型?
你试着把 a=mat2gray(double(a))中mat2gray改为 rgb2gray 试试。

gefei1989 发表于 2011-6-7 10:18

回复 7 # chenlu1986 的帖子

多谢指导,没想到竟然是那个图像的问题,不过又出现了新的提示。
输入为:
>> a=imread('F:\image\nadal.jpg');
>> a=rgb2gray(double(a));
>> a=double(a)*255;
>> =BEMD_RBF(a,6,1,1,0.0003);

错误提示为:
Interpolation par les extrema
Pourquoi nbre de min si petit, nombre de min=2
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   Obtention d'un Mode
Pourquoi nbre de min si petit, nombre de min=0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   Obtention d'un Mode
Pourquoi nbre de min si petit, nombre de min=0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   Obtention d'un Mode
Pourquoi nbre de min si petit, nombre de min=0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   Obtention d'un Mode
Pourquoi nbre de min si petit, nombre de min=0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   Obtention d'un Mode
Pourquoi nbre de min si petit, nombre de min=0
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   Obtention d'un Mode

chenlu1986 发表于 2011-6-7 11:14

回复 8 # gefei1989 的帖子

错误提示是什么??上面那些非英文的偶不懂~{:{02}:}

gefei1989 发表于 2011-6-7 12:07

回复 9 # chenlu1986 的帖子

{:{19}:}只有那几句,完全不懂

gefei1989 发表于 2011-6-7 13:41

回复 9 # chenlu1986 的帖子

貌似这是法语,关于插值的。。。。。。

chenlu1986 发表于 2011-6-7 14:55

回复 11 # gefei1989 的帖子

把你的图片上传,我帮你运行一下试试。你是要分解成6个分量是吧?

gefei1989 发表于 2011-6-7 15:59

本帖最后由 gefei1989 于 2011-6-7 16:00 编辑

回复 12 # chenlu1986 的帖子



=BEMD_RBF(a,6,1,1,0.0003);
其实这句话里面的参数,我也不知道什么意思。

chenlu1986 发表于 2011-6-7 16:32

在我电脑上运行无误。
>> I=imread('nadal.jpg');
>> I=rgb2gray(I);
I=im2double(I);
I=double(I)*255;
figure,imshow(I,[]);title('original image');
>> =BEMD_RBF(I,6,1,1,0.0003);
for j=1:6
    figure
    imshow(Imodes(:,:,j),[]), title(['mode' num2str(j)])
end;


检查一下你的工具箱和子函数。。。

gefei1989 发表于 2011-6-7 16:54

回复 14 # chenlu1986 的帖子

{:{23}:}多谢版主帮忙,问题已经解决,之前是怎么回事,我还要再研究下。我会尽快把这个问题整理好,再发布出来。太感谢了!
页: [1] 2
查看完整版本: 求助二维BEMD的使用