博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
matlab练习程序(力场变换)
阅读量:6209 次
发布时间:2019-06-21

本文共 1850 字,大约阅读时间需要 6 分钟。

  把图像中每一个像素当成有质量的恒星,像素的灰度值就相当于恒星的质量,运用万有引力定律求得每个像素受到其他像素的“力”,获得力场图像。

  公式就是中学的万有引力公式,不过这里是向量场,所以每一个像素受到的力不是简单的叠加,是矢量求和。

  好像有用这个力场变换识别耳朵的。

  这里也是求模板大小的局部力场,全局力场我运行了1天,结果不太理想。

  相关代码:

main.m

clear all;close all;clc;r=3;img=imread('lena.jpg');img=double(img);[m n]=size(mat2gray(img));imgn=zeros(m+2*r+1,n+2*r+1);imgn(r+1:m+r,r+1:n+r)=img;imgn(1:r,r+1:n+r)=img(1:r,1:n); imgn(1:m+r,n+r+1:n+2*r+1)=imgn(1:m+r,n:n+r);imgn(m+r+1:m+2*r+1,r+1:n+2*r+1)=imgn(m:m+r,r+1:n+2*r+1);imgn(1:m+2*r+1,1:r)=imgn(1:m+2*r+1,r+1:2*r);f_field=imgn;for i=1+r:m+r   for j=1+r:n+r             f=0;       for p=i-r:i+r          for q=j-r:j+r              if i~=p &&j~=q                  p0=[i j];                  lev=[i+10 j];                  p1=[p q];                                    jiao=multi_jiao(p1,lev,p0);       %以下四步是通过夹角定理与叉积确定向量和水平向量的夹角                  flag=multi(p1,lev,p0);                  jiao=xiangxian(jiao,flag);                  jiao=mod(jiao,360);                                    value=cos(jiao*pi/180);       %通过余弦确定权重,力场是一个向量场                  f=f+imgn(i,j)*imgn(p,q)/sqrt((i-p)^2+(j-q)^2)*value;  %万有引力定律              end                      end                  end       f_field(i,j)=f;          end    endfigure;f_field=f_field(r+1:m+r,r+1:n+r);imshow(mat2gray(f_field));

multi_jiao.m

function re=multi_jiao(p1,p2,p0)    %判断
夹角 x=1; y=2; vec1=p1-p0; vec2=p2-p0; re=acos(dot(vec1,vec2)/(norm(vec1)*norm(vec2)))*180/pi;end

multi.m

function re=multi(p1,p2,p0)     %p10,p20叉积,获取正负    x=1;    y=2;      re=(p1(x)-p0(x))*(p2(y)-p0(y))-(p1(y)-p0(y))*(p2(x)-p0(x));end

xiangxian.m

function re=xiangxian(jiao,flag)       if flag>0        re=360-jiao;    else        re=jiao;                end                 end

下面是运行效果:

原图

7*7的局部力场

简单的标量求和,似乎有一种朦胧美

转载于:https://www.cnblogs.com/tiandsp/archive/2012/12/12/2814701.html

你可能感兴趣的文章
Linux游(1): diff, patch和quilt (下一个)
查看>>
background-size 导致的背景不居中问题
查看>>
css3学习总结8--CSS3 3D转换
查看>>
linux命令合集
查看>>
Robot framework+python安装使用图解版
查看>>
git忽略特殊文件
查看>>
【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展
查看>>
LDA-math-神奇的Gamma函数
查看>>
FlexBuilder远程调试WEB应用
查看>>
python gzip 压缩文件
查看>>
IIS7部署项目时提示:"错误消息 401.2。: 未经授权: 服务器配置导致登录失败。"的解决办法...
查看>>
Sublime text 2/3 中 Package Control 的安装与使用方法
查看>>
git svn cygwin_exception
查看>>
sudo和su
查看>>
MySQL 5.6 my.cnf 参数详细说明
查看>>
cocos2d-x注意事项(十)Lua发展飞机战争-4-创建主角
查看>>
泛型委托 Predicate/Func/Action
查看>>
[HIS] HIT行业常用名词及缩写定义
查看>>
IOS-Plist文件存储(1)
查看>>
Git 学习笔记--拉取远程分支到本地
查看>>