溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript編程如何通過Matlab質心算法定位

發(fā)布時間:2021-10-20 10:54:43 來源:億速云 閱讀:184 作者:iii 欄目:開發(fā)技術

本篇內容介紹了“JavaScript編程如何通過Matlab質心算法定位”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

目錄
  • Matlab質心算法

Matlab作為封閉的商業(yè)軟件,受美國政府左右,無視商業(yè)道德,故不建議使用。如果喜歡Matlab語法,可移步開源的octave,其語法與matlab完全相同。

Matlab質心算法

所謂質心,就是當密度作為像素點灰度值時的重心,例如其質心的x坐標為

JavaScript編程如何通過Matlab質心算法定位

最直觀的方法就是下面的這種方式了。

%%通過質心算法找到img的質心位置
function [x,y] = oCenter(img)
img = double(img);
[m,n] = size(img);
x = 0;y = 0;sum=0;
for i = 1:m
    for j = 1:n
        y = y + img(i,j)*i;
        x = x + img(i,j)*j;
        sum = sum+img(i,j);
    end
end
x = x/sum;
y = y/sum;

這么寫足夠簡單粗暴,卻也太丑了,畢竟在Matlab中,矩陣才是最基本的操作單元。
而且在累加求和的過程中,也的確反復使用了相同的數組。對于第i行而言,每一列分別與1,2,3...相乘并求和,也就是第i行向量與向量[1:n]的點積。于是先不管整張圖片,第i行向量的質心也就可以比較簡單地寫出來了。

x = img(i,:)*(1:n)'/sum(img(i,:));

基于此,我們還得到了一個意外收獲,即可以很方便地把每一行的質心用一行表達式寫出來

x = img*(1:n)'./sum(img,2);%每一行的質心
y = (1:m)*img./sum(img);%每一列的質心

強迫癥表示看上去很舒服。
相應地,圖片整體的質心可寫為

sumImg = sum(img(:));
x = sum(img)*(1:n)'/sumImg;
y = (1:m)*sum(img,2)/sumImg;

“JavaScript編程如何通過Matlab質心算法定位”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI