导航:首页 > 源码编译 > 质心定位算法代码

质心定位算法代码

发布时间:2022-11-16 11:06:52

㈠ 无线传感器网络加权质心定位算法Matlab仿真的一些疑问。

你没有定义信标节点(BeaconAmount)的个数。不定义肯定报错啊。一下是我最近随便编的一段类似于质心算法的东西的核心部分,你的同学应该能看懂,有点帮助。
if num_of_neb_anchor(i)>1&&num_of_neb_anchor(i)<6
%如果未知节点i的邻居锚节点个数在2和5之间
fenmu(i)=0;
fenzi_x(i)=0;
fenzi_y(i)=0;
fenzi_z(i)=0;
for k=1:num_of_neb_anchor(i)
distant_rssi(i,k)=sqrt((node_x(i)-neighbor_anchor_x(i,k))^2+(node_y(i)-neighbor_anchor_y(i,k))^2+(node_z(i)-neighbor_anchor_z(i,k))^2);
fenmu(i)=fenmu(i)+1/distant_rssi(i,k);
fenzi_x(i)=fenzi_x(i)+neighbor_anchor_x(i,k)/distant_rssi(i,k);
fenzi_y(i)=fenzi_y(i)+neighbor_anchor_y(i,k)/distant_rssi(i,k);
fenzi_z(i)=fenzi_z(i)+neighbor_anchor_z(i,k)/distant_rssi(i,k);
end
esti_node_x(i)=fenzi_x(i)/fenmu(i);
esti_node_y(i)=fenzi_y(i)/fenmu(i);
esti_node_z(i)=fenzi_z(i)/fenmu(i);%未知节点的估计坐标
end

㈡ 质心算法matlab求讲解

自从网络文库和网络知道通道阻塞后,好久没回答问题了,今天抽空回答一下:
clear
clc
for i=1:1:10
for j=1:1:10
x(j+(i-1)*10)=(i-1)*10;
y(j+(i-1)*10)=(j-1)*10;
end
end
figure
plot(x,y,'.')

hold on
axis([0 100 0 100])
xy=[x;y]
hold on
xm=90;
ym=90;
n=50;%在原有100个点中随机产生50个点
for i=1:1:n
Sx(i)=rand(1,1)*xm;
Sy(i)=rand(1,1)*ym;
plot(Sx(i),Sy(i),'r*')
xlabel('x轴')
ylabel('y轴')
hold on
end
dm=30
m=100;%%%以上都知道,就是下面看不懂,求讲解
for j=1:1:n
SS=[Sx(j);Sy(j)];%选择一个点
k=0;
for i=1:1:m
d=norm((xy(:,i)-SS),2);%计算这个点和其它100点的距离(用欧式距离)
if d<=dm %距离小于阈值则记录
xx(j,i)=xy(1,i);
yy(j,i)=xy(2,i);
k=k+1;
else%距离太大就不记录(可以这么理解:将随机点的周围点作为一组,太远的点就不作为这一组了)
xx(j,i)=0;
yy(j,i)=0;
end
end
if k~=0%如果这个随机点所在的组不是空集,则计算该组的均值
cent(:,j)=[sum(xx(j,:));sum(yy(j,:))]/k;
else
cent(:,j)=0;
end
plot(cent(1,j),cent(2,j),'o')%画出这个组的质心(将一张图分为几组)
hold on
plot([cent(1,j) Sx(j)],[cent(2,j) Sy(j)],'R') %画出这个随机点所属于的质心
Title('Centroid')
hold on
MM=[cent(1,j);cent(2,j)]
e(j)=norm((MM-SS),2)/dm%计算误差(质心和随机点)
end
figure
axis([0 n 0 1])
j=1:1:n
plot(j,e(j) ,'-r.')%画出这50个点的误差,即距离质心的距离
hold on
Title('Centroid')
E=sum(e)/n

java代码怎么实现计算图像二值连通区域的质心

一:几何距(Geometric
Moments)知识与质心寻找原理
1.
Image
Moments是图像处理中非常有用的算法,可以用来计算区域图像的质心,方向等几何特性,同时Mpq的高阶具有旋转不变性,可以用来实现图像比较分类,正是因为Moments有这些特性,很多手绘油画效果也会基于该算法来模拟实现。它的数学表达为:
它的低阶M00,M01,
M10可以用来计算质心,中心化以后M11,M02,M20可以用来计算区域的方向/角度
2.
什么是质心
就是通过该点,区域达到一种质量上的平衡状态,可能物理学上讲的比较多,简单点的说就是规则几何物体的中心,不规则的可以通过挂绳子的方法来寻找。
二:算法流程
1.
输入图像转换为二值图像
2.
通过连通组件标记算法找到所有的连通区域,并分别标记
3.
对每个连通区域运用计算几何距算法得到质心
4.
用不同颜色绘制连通区域与质心,输出处理后图像
三:算法效果
左边为原图,
右边蓝色为连通组件标记算法处理以后结果,白色点为质心
四:关键代码解析
1.
计算几何距算法代码
doublem00
=
moments(pixels,
width,
height,
0,
0);
doublexCr
=
moments(pixels,
width,
height,
1,
0)
/
m00;//
row
doubleyCr
=
moments(pixels,
width,
height,
0,
1)
/
m00;//
column
return
new
double[]{xCr,
yCr};

㈣ 请问有无线传感器网I加权质心算法matlab代码吗

[capture-of-moving.rar] - 本文详细介绍了在视频图像的基础上用!"#$ & ’(( )*+ 实现运动目标形心捕获的具体程序"从而可以实现运动 目标的位置检测 程序运用改进的形心算法计算目标图形 的中心坐标"并使用了计时器函数实时显示坐标变化值
[codebook.rar] - 实现了基于码书的运动检测,并有与其他的检测算法做对比,例如MOG,Bayes,三帧差分等。
[xin.rar] - 无线传感器网络加权质心自定位算法中加权质心算法仿真

[qq1_2.rar] - 3种定位算法(多边:3 边及4边 最小二乘 质心)的主程序
[802.11opnet.rar] - 802.11opnet,802.11在OPNET中的仿真代码
[rssic.rar] - 无线传感器网络的加权质心算法,用matlab编程的,需要的可以参考
[Simulation1.rar] - 本程序先使用RSSI中对数常态模型来测距离,然后用三边测量法来计算未知节点的坐标。
[RSSIxin.rar] - 基于RSSI测距的无线传感器网络改进质心定位算法
[xinsuanfa2.rar] - 无线传感器网络中质心算法,并有锚节点比例和误差分析
[myDVHOP.rar] - 一种基于RSSI的DV-HOP加权算法,该算法基于节点接收信标节点位置元组时的信号强度(RSSI)对邻居节点间跳数进行加权处理,将节点间的跳数与距离相关联,仿真试验结果证明该加权算法可大大提高定位精度。

㈤ 什么是质心法

以下是求二值图像质心的代码:
[m,n]=size(I);
for i=1:m
for j=1:n
g1=g1+i*I(i,j);
g2=g2+I(i,j);
g3=g3+j*I(i,j);
g4=g4+I(i,j);
end
end
x=g1/g2;
y=g3/g4;

质点质心的代码
RGB=imread('13.jpg');
figure,imshow(RGB);
I=rgb2gray(RGB); %将彩色图像转换成灰度图像
threshold=graythresh(I); %计算将灰度图像转换成二值图像所需的门限
X=im2bw(I,threshold); %将灰度图像转换为二值图像
figure,imshow(X);
[m,n]=size(X);
g1=0,g2=0,l=0;
for i=1:m
for j=1:n
if X(i,j)==0
g1=g1+i;
g2=g2+j;
l=l+1;
end
end
end
x=g2/l;
y=g1/l;

㈥ 急求一幅图像中目标区域的质心点坐标的matlab的源代码

你的程序太复杂,帮你改了一下,在原图中的质心点坐标是(originalx,originaly)

pic=imread('F:\11\33.bmp');
[x,y,z] = size(pic);
if(z~=1)
pic = rgb2gray(pic);
end
imshow(pic);
im = pic;
[temp1,temp2,p,rect]=imcrop(im);
figure,imshow(p)
title('所选目标车辆');
[rows,cols] = size(p);
meanx = (1+cols)/2;
meany = (1+rows)/2;
hold on
plot(meanx,meany , '*')
originalx=meanx+round(rect(1))-1;
originaly=meany+round(rect(2))-1;
figure
imshow(pic)
hold on
plot(originalx,originaly,'*')

㈦ 跪求大神给一段三角质心定位的代码 java C C++ 来者不拒

给你写了一个求质心的函数,代码如下:
(因为函数中使用到求平方根的函数sqrt,所以请包含math.h头文件)

#include <math.h>

POINT ZX(int X1,int Y1,int X2,int Y2,int X3,int Y3) //参数分别为三角形的三个坐标点
{float L1,L2,L3,N; //L1,L2,L3分别代表三条边的长,(N用来作交换用)
POINT PN; //用来表示质心的坐标
L1=sqrt((X1-X2)*(X1-X2)+(Y1-Y2)*(Y1-Y2)); //分别求出三条边的长
L2=sqrt((X1-X3)*(X1-X3)+(Y1-Y3)*(Y1-Y3));
L3=sqrt((X3-X2)*(X3-X2)+(Y3-Y2)*(Y3-Y2));

if (L1<L2) //如果L2比L1大,就把两个数交换
{N=L1;
L1=L2;
L2=N;}

if (L1<L3) //如果L3比L1大,就把两个数交换
{N=L1;
L1=L3;
L3=N;}
//经过两轮的比较和交换,可以确保L1是三条边中最大的一条
if (L1>=(L2+L3)) //如果最大边大于等于两条小条的和,则三点构不成一个三角形
{PN.x=0xffffffff; //设置一个错误值
PN.y=0xffffffff;
return PN;} //让函数返回错误值,这样调用函数之后就可以作出相应的判断

/*如果通过判断符合三角形的条件,求质心,质心就是重心,公式很简单.
就是X=(X1+X2+X3)/3;Y=(Y1+Y2+Y3)/3,如果要证明有点长,这里就不说.
你可以自己试着证明一下,或网络一下*/

PN.x=(X1+X2+X3)/3;
PN.y=(Y1+Y2+Y3)/3;
return PN;}

㈧ Matlab通过质心求二值图像最大内接矩的问题

希望以下程序对你有所帮助

function a=fdd(x)
b=mean(x);
a=mean(b);
function out=zs(im)
%
%zs appises the Zhang-Suen skeletonization algorithm to image IM. IM must
%be binary.
%
luteven=makelut('zseven',3);
lutodd=makelut('zsodd',3);
done=0;
N=2;
last=im;
previous=applylut(last ,lutodd);
current=applylut(previous,luteven);
while done==0,
if all(current(:)==last(:)),
done=1;
end
N=N+1;
last=previous;
previous=current;
if mod(N,2)==0,
current=applylut(current,luteven);
else
current=applylut(current,lutodd);
end;
end;
out=current;

% L =[
% 0 0 0 0 0 0 0 0 0 0
% 0 1 1 1 1 1 0 0 0 0
% 0 1 1 1 1 1 0 0 0 0
% 0 1 1 1 1 1 0 0 0 0
% 0 1 1 1 1 1 0 0 0 0
% 0 1 1 1 1 1 0 0 0 0
% 0 1 1 1 1 1 1 1 1 0
% 0 1 1 1 1 1 1 1 1 0
% 0 1 1 1 1 1 1 1 1 0
% 0 1 1 1 1 1 1 1 1 0
% 0 1 1 1 1 1 1 1 1 0
% 0 0 0 0 0 0 0 0 0 0]
%zs(L)
function out=zsodd(nbhd);
s=sum(nbhd(:))-nbhd(5);
temp1=(2<=s)&(s<=6);
p=[nbhd(1) nbhd(4) nbhd(7) nbhd(8) nbhd(9) nbhd(6) nbhd(3) nbhd(2)];
pp=[p(2:8) p(1)];
xp=sum((1-p).*pp);
temp2=(xp==1);
prod1=nbhd(4)*nbhd(8)*nbhd(6);
prod2=nbhd(8)*nbhd(6)*nbhd(2);
temp3=(prod1==0)&(prod2==0);
if temp1&temp2&temp3&nbhd(5)==1
out=0;
else
out=nbhd(5);
end;

function out=zseven(nbhd);
s=sum(nbhd(:))-nbhd(5);
temp1=(2<=s)&(s<=6);
p=[nbhd(1) nbhd(4) nbhd(7) nbhd(8) nbhd(9) nbhd(6) nbhd(3) nbhd(2)];
pp=[p(2:8) p(1)];
xp=sum((1-p).*pp);
temp2=(xp==1);
prod1=nbhd(4)*nbhd(8)*nbhd(2);
prod2=nbhd(4)*nbhd(6)*nbhd(2);
temp3=(prod1==0)&(prod2==0);
if temp1&temp2&temp3&nbhd(5)==1
out=0;
else
out=nbhd(5);
end;

㈨ java代码怎么实现计算图像二值连通区域的质心

一:几何距(Geometric Moments)知识与质心寻找原理

1. Image Moments是图像处理中非常有用的算法,可以用来计算区域图像的质心,方向等几何特性,同时Mpq的高阶具有旋转不变性,可以用来实现图像比较分类,正是因为Moments有这些特性,很多手绘油画效果也会基于该算法来模拟实现。它的数学表达为:

它的低阶M00,M01, M10可以用来计算质心,中心化以后M11,M02,M20可以用来计算区域的方向/角度

2. 什么是质心

就是通过该点,区域达到一种质量上的平衡状态,可能物理学上讲的比较多,简单点的说就是规则几何物体的中心,不规则的可以通过挂绳子的方法来寻找。

二:算法流程

1. 输入图像转换为二值图像

2. 通过连通组件标记算法找到所有的连通区域,并分别标记

3. 对每个连通区域运用计算几何距算法得到质心

4. 用不同颜色绘制连通区域与质心,输出处理后图像

三:算法效果

左边为原图, 右边蓝色为连通组件标记算法处理以后结果,白色点为质心

四:关键代码解析

1. 计算几何距算法代码

doublem00 = moments(pixels, width, height, 0, 0);

doublexCr = moments(pixels, width, height, 1, 0) / m00;// row

doubleyCr = moments(pixels, width, height, 0, 1) / m00;// column

return new double[]{xCr, yCr};

㈩ JavaScript实现计算多边形质心的方法示例

本文实例讲述了JavaScript实现计算多边形质心的方法。分享给大家供大家参考,具体如下:
最近要基于网络地图显示多边形的标注,所以就研究了下计算Polygon的质心,代码如下:
function
Area(p0,p1,p2)
{
var
area
=
0.0
;
area
=
p0.lng
*
p1.lat
+
p1.lng
*
p2.lat
+
p2.lng
*
p0.lat
-
p1.lng
*
p0.lat
-
p2.lng
*
p1.lat
-
p0.lng
*
p2.lat;
return
area
/
2
;
}
//line
249
计算polygon的质心
function
getPolygonAreaCenter(points)
{
var
sum_x
=
0;
var
sum_y
=
0;
var
sum_area
=
0;
var
p1
=
points[1];
debugger;
for
(var
i
=
2;
i
<
points.length;
i++)
{
p2=points[i];
area
=
Area(points[0],p1,p2)
;
sum_area
+=
area
;
sum_x
+=
(points[0].lng
+
p1.lng
+
p2.lng)
*
area;
sum_y
+=
(points[0].lat
+
p1.lat
+
p2.lat)
*
area;
p1
=
p2
;
}
var
xx
=
sum_x
/
sum_area
/
3;
var
yy
=
sum_y
/
sum_area
/
3;
return
new
BMap.Point(xx,
yy);
}
标注文字的效果如下:
更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript事件相关操作与技巧大全》、《JavaScript操作DOM技巧总结》及《JavaScript字符与字符串操作技巧总结》
希望本文所述对大家JavaScript程序设计有所帮助。
您可能感兴趣的文章:js浮点数精确计算(加、减、乘、除)javascript
计算两个整数的百分比值js中精确计算加法和减法示例根据经纬度计算地球上两点之间的距离js实现代码js计算精度问题小结html+js实现简单的计算器代码(加减乘除)如何根据网络地图计算出两地之间的驾驶距离(两种语言js和C#)jsvascript图像处理—(计算机视觉应用)图像金字塔Javascript计算两个marker之间的距离(Google
Map
V3)javascript图像处理—边缘梯度计算函数

阅读全文

与质心定位算法代码相关的资料

热点内容
医疗不良事件上报系统源码 浏览:752
手机云视频加密怎么关 浏览:72
北京文件夹加密多少钱 浏览:671
什么是车鉴定app 浏览:66
战地一私人服务器怎么买 浏览:497
陈天程序员 浏览:833
编译原理如何运用到编程中 浏览:17
linux选择数据库 浏览:376
php两个数组差集 浏览:978
迷你pdf阅读器下载 浏览:433
做一个python小程序 浏览:655
pythonossystem和 浏览:645
win2008如何搭建ftp服务器 浏览:53
安卓手机为什么不翻牌 浏览:546
删除pkpm及相关文件夹 浏览:481
房贷解压银行内部流程 浏览:734
安卓手机如何更改语音 浏览:601
android红包实现 浏览:734
苹果的nvme为什么安卓不用 浏览:32
python输入单词统计个数 浏览:998