首页 > 编程语言 >小波特征提取算法代码

小波特征提取算法代码

时间:2024-03-31 21:58:51浏览次数:22  
标签:end 代码 break 128 算法 y0 特征提取 129 x0

function   tezhengtiqu
%新归一化方法小波矩特征提取----------------------------------------------------------


F=imread('a1.bmp');
F=im2bw(F);
F=imresize(F,[128 128]);
%求取最上点
for i=1:128
    for j=1:128
        if (F(i,j)==1)
            ytop=i;
            xtop=j;
            break;
        end
    end
    if(F(i,j)==1)
        break;
    end
end
%求取最下点
for i=1:128
    for j=1:128
        if (F(129-i,j)==1)
            ybottom=129-i;
            xbottom=j;
            break;
        end
    end
    if(F(129-i,j)==1)
        break;
    end
end
%求取最左点
for i=1:128
    for j=1:128
        if (F(j,i)==1)
            yleft=j;
            xleft=i;
            break;
        end
    end
    if(F(j,i)==1)
        break;
    end
end
%求取最右点
for i=1:128
    for j=1:128
        if (F(j,129-i)==1)
            yright=j;
            xright=129-i;
            break;
        end
    end
    if(F(j,129-i)==1)
        break;
    end
end
%求取中心点
x0=(xright-xleft)/2+xleft;
y0=(ybottom-ytop)/2+ytop;
x0=round(x0);
y0=round(y0);
%图像平移
F=double(F);
[M,N]=size(F);
F1=zeros(M,N);
M0=M/2;
N0=N/2;
for i=1:M
  for j=1:N
        if F(i,j)==1
           F1(i+M0-y0,j+N0-x0)=1;
        end
    end
end
figure,imshow(F1);
%图像缩放
max=0;
for i=1:128
    for j=1:128
        if(F(i,j)==1)
            d=sqrt((i-y0)^2+(j-x0)^2);
            if(max<d)
                max=d;
            end
        end
    end
end
%max=round(max);
a=200.0/(max*2);
F2=imresize(F1,a);
figure,imshow(F2);
%将所有图像均复制到500*500的图像的大小
[M,N]=size(F2);
m0=M/2;
m0=round(m0);
n0=N/2;
n0=round(n0);
f3=zeros(500,500);
y1=round((500-M)/2);
x1=round((500-N)/2);
for i=1:M
    for j=1:N
        if(F2(i,j)==1)
            f3(y1+i,x1+j)=1;
        end
    end
end
figure,imshow(f3);
%图像从笛卡儿坐标转换为极坐标------------------------------------------------------------
%角度间隔为2*pi/(128*128),128个像素长设为图像的单位圆半径
%f1矩阵里面放着对应极半径和角度的值
f1=zeros(128,16384);
%直角坐标与极坐标建立起一一对应的关系           
for i=1:128
    for j=1:16384
        a=j*2*pi/16384.0;
        r=i;
        y=round(r*sin(a));
        x=round(r*cos(a));
       if (f3(250+x,250+y)==1)
            f1(i,j)=1;
        end
    end
end
F3=zeros(512,512);
%将极坐标转换后的图像显示出来
for i=1:128
    for j=1:16384
        if  f1(i,j)==1
            a=j*2*pi/16384.0;
            x=round(i*cos(a));
            y=round(i*sin(a));
            F3(256+x,256+y)=1;
        end
    end
end
F3(256,256)=1;
figure,imshow(F3);
%小波矩特征提取-------------------------------------------------------------------
%进行角度积分得到Sq(r)------------------
N=16384;
Sq=zeros(128,4);
for r=1:128
    for q=1:4
        for m=1:N          
             Sq(r,q)=(f1(r,m)*exp(-j*2.0*pi*(m-1)*(q-1)/N))+Sq(r,q);
        end
       Sq(r,q)=1.0/N*Sq(r,q);
    end
end
%小波矩特征提取-------------------------
x=3;
a=0.697066;
f0=0.409177;
w=sqrt(0.561145);
F1=zeros(3,9,4);
 tt=4*a^(x+1)/sqrt(2*pi*(x+1))*w;
for q=1:4
    for m=1:3
        rr=2^m+1;
        for n=1:rr
            for r=1:128
               %pp=2*(2^(m-1)*(r-1)/128.0-(n-1))-1;
               pp=2*(2^(m-1)*r/128.0-(n-1))-1;
               cc=cos(2*pi*f0*pp)*exp(-1.0*pp^2/(2*(w^2)*(x+1)));
               fan=2^((m-1)/2)*tt*cc;
               %Fmnq(m,n,q)=abs(Sq(r,q)*fan*(r-1)/128)+Fmnq(m,n,q);
               F1(m,n,q)=abs(Sq(r,q)*fan*r)+F1(m,n,q);
            end
        end
    end
end
  F1








标签:end,代码,break,128,算法,y0,特征提取,129,x0
From: https://blog.csdn.net/m0_57692904/article/details/137210536

相关文章

  • PHP代码审计——Day1-Wish List
    前言:发现红日安全代码审计小组写了关于php代码审计demo的系列文章,于是跟着一起学习。参考:[红日安全]代码审计Day1-in_array函数缺陷RIPS-PHP-SECURITY-CALENDAR-2017学习记录漏洞解析classChallenge{constUPLOAD_DIRECTORY='./solutions/';private$file;priv......
  • 上海大厂Android面试经历;华为+小米,阿里高级算法专家公开10份资料
    第三方库的源码,Glide、OkHttp和Retrofit问得比较多,MVC,MVP和MVVM开发模式优缺点。常用设计模式理解问得也多,大公司Binder驱动和虚拟机方面问得比较多。3.数据结构和算法,Java的常用集合和实现原理比如ArrayList,LinkedHashMap的实现原理,缓存淘汰策略,红黑树和二叉......
  • 毕业设计:基于卷积神经网络的短文本分类算法系统
    目录前言项目背景数据集设计思路更多帮助前言  ......
  • 代码随想录算法训练营第11天 | 栈和队列
    20.有效的括号遇到左括号入栈,遇到右括号弹出boolisValid(strings){ stack<char>kuohao; charc; for(chara:s){ switch(a) { case'(': case'{': case'[': kuohao.push(a); break; case')': case'......
  • 全面修复-由于找不到d3dx9_43.dll,无法继续执行代码
    在计算机打开游戏和运行过程中,常常会遇到一些错误提示,其中最常见的就是缺少某个动态链接库(DLL)文件。而d3dx9_43.dll文件就是其中之一。本文将对d3dx9_43.dll文件进行总体介绍,帮助读者了解该文件的作用、安装方法以及常见问题的解决方法。 一,d3dx9_43.dll文件对系统的用途......
  • 代码随想录第11天: 栈的应用
    20.有效的括号力扣题目链接(opensnewwindow)给定一个只包括‘(’,‘)’,‘{’,‘}’,‘[’,‘]’的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。示例1:输入:“()......
  • 代码随想录第10天:栈和队列基础操作
    语言:Java参考资料:代码随想录 232.用栈实现队列力扣题目链接(opensnewwindow)使用栈实现队列的下列操作:push(x)–将一个元素放入队列的尾部。pop()–从队列首部移除元素。peek()–返回队列首部的元素。empty()–返回队列是否为空。示例:MyQueuequeue......
  • 多目标应用:基于非支配排序的蜣螂优化算法(Non-Dominated Sorting Dung beetle optimize
    一、柔性作业车间调度问题柔性作业车间调度问题(FlexibleJobSchedulingProblem,FJSP)的描述如下:n个工件{J,J......
  • KNN算法实验
    1.knn算法概述KNN算法是机器学习算法中最基础,最简单的算法之一。它既能用于分类,也能用于回归。KNN通过测量不同特征值之间的距离来进行分类。KNN算法的思想就是对输入的特征向量对应特征空间的一个点,输出为该特征向量所对应的类别标签或者预测值。KNN算法是一种特别的机器学习......
  • java-飞机大战(源代码)
    今天来更新我的飞机大战了,是参考尚学堂写的,有需要的小伙伴可以直接来取,关于state=2时以及state=3时的运行时可能不太优化,下周我会更新代码的. 1.整个游戏的主窗口以及游戏方法importjavax.swing.*;importjava.awt.*;importjava.awt.event.KeyAdapter;importjav......