2011-07-29 11 views
1

Image Momentの計算を可能にする関数またはツールボックスはありますか?Matlab - Image Momentum Calculation

http://en.wikipedia.org/wiki/Image_moment

私はこの機能を適用したいデータのタイプはバイナリです。基本的に0と1で埋められた行列です。

Data = 

    1  0  0  0  0  0 
    1  1  1  0  1  1 
    0  1  1  1  1  0 
    1  0  1  1  0  0 
    0  1  1  0  0  0 
    1  1  0  0  0  0 
    0  0  0  0  0  0 
    1  0  0  1  0  0 

そして、このタイプのデータに画像モーメントを適用したいと思います。このタイプのデータに最適なMatlab実装はありますか?

答えて

6

私のprevious answerには、regionprops関数のサブセットの実装が記述されています。目標はimage momentsから得られた画像方向を見つけることでした。ここではあなたに関連する部分は次のとおりです。

function outmom = raw_moments(im,i,j) 
    outmom = sum(sum(((1:size(im,1))'.^j * (1:size(im,2)).^i) .* im)); 
end 

function cmom = central_moments(im,i,j) 
    rawm00 = raw_moments(im,0,0); 
    centroids = [raw_moments(im,1,0)/rawm00 , raw_moments(im,0,1)/rawm00]; 
    cmom = sum(sum((([1:size(im,1)]-centroids(2))'.^j * ... 
        ([1:size(im,2)]-centroids(1)).^i) .* im)); 
end 

コードはWikipediaの記事からの方程式を以下のため、追加の説明は必要ありません。..迅速かつ詳細な回答のため

+0

おかげで。私はイメージモーメントに関する簡単な質問があります。画像の瞬間を適用する前にまず画像からノイズを除去しなければならないと思いますか、それほど問題にはなりません。たとえば、データ行列の最後の行の2ピクセルは全体の結果に影響しますか? – Simon

+0

@Simon:あなたのアプリケーションでノイズを定義する方法に依存していると思いますが、小さな切断領域を意味しますか?そうであれば、MATLABには形態学的操作(膨張/浸食、BWAREAOPENなど)に役立ついくつかの機能があります。 – Amro