㈠ 無線感測器網路加權質心定位演算法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圖像處理—邊緣梯度計算函數