プロが教えるわが家の防犯対策術!

Kitchen-Rosenfeldという特徴点抽出フィルターがあるのですが、
5x5行列表示するとどのようになるのでしょうか?
ちなみに計算式だと
(fxx*fy^2 +fyyfx^2 −2fxyfxfy)/(fx^2 + fy^2)
 fx,yはf(x,y)の一回偏微分、fxx等は二回偏微分
だそうです

質問者からの補足コメント

  • つらい・・・

    あ、どうも詳しい解説ありがとうございます。

    線形1次におとしていけばよいことは何となくわかりました。
    ただもし出来れば、計算結果の行列式を教えていただけると幸いです。
    (厚かましくてすいません)

    例えばラプラシアン(∂^2/∂x^2 + ∂^2/∂x^2)f(x,y)は3x3行列で表現すると
    | 1 1 1 |
    | 1 -8 1 |
    | 1 1 1 |
    とかだそうですその導出はわかったのですが、本件は式がもっと複雑なので、
    行列まで落とせていません。
    ・・そもそもその前に(∂/∂x)^2の行列表現とか・・

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/01/26 22:22

A 回答 (2件)

5x5だと、一意には定まらないですが。


例えば、テイラー展開の式
f(x0+a,y0+b) = f(x0, y0) + fx(x0,y0)*a + fy(x0,y0)*b + 1/2fxx(x0,y0)*a^2 + fxy(x0,y0)*ab + 1/2fyy(x0,y0)*b^2
で、左辺を -2≦a≦2, -2≦b≦2で動かせば、24本の式ができます。
この24本の式から、fx, fy, fxx, fxy, fyyについて解きます。
ただし、未知数がfx, fy, fxx, fxy, fyyの5つで、式が24個あるので、通常の連立方程式では解けないので、
適当に回帰するなりして、とにかくfx, fy, fxx, fxy, fyyを決めます。(真ん中に近い画素の重みを周辺よりも高くした重み付き回帰をするのがいいと思います)

これで、fx, fy, fxx, fxy, fyyが、25個の画素の値で表せたわけで、
(fxx*fy^2 +fyyfx^2 −2fxyfxfy)/(fx^2 + fy^2)
に代入すればよい。
もし、行列であること(線形であること)が必須であるなら、さらに各画素値について1次近似すればよい。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。
式が複雑で結果が出せておりません。
少し補足説明を加えましたので、見ていただければ幸いです。
よろしくお願いいたします。

お礼日時:2017/01/26 22:27

>(∂/∂x)^2の行列表現とか・・


下にも書いたように、5×5の場合には、(∂/∂x)^2 つまりfxx、などを一意に定めることはできません。
なんで、(質問者さんが)なんらかの指針で、fxx、などを決めないといけません。

下の回答を、具体的に書き下してみますか。
f(x,y)で画素の値を表すことにすれば、(ただし-2≦x≦2、-2≦y≦2)

f(-2,-2) = f(0,0) - 2*fx - 2*fy + 2*fxx + 4*fxy + 2*fyy
f(-1,-2) = f(0,0) - fx - 2*fy + 1/2*fxx + 2*fxy + 2*fyy
f(0,-2) = f(0,0) - 2*fy + 2*fyy
f(1,-2) = f(0,0) + fx - 2*fy + 1/2*fxx - 2*fxy + 2*fyy
f(2,-2) = f(0,0) + 2*fx - 2*fy + 2*fxx - 4*fxy + 2*fyy
f(-2,-1) = f(0,0) - 2*fx - fy + 2*fxx + 2*fxy + 1/2*fyy
f(-1,-1) = f(0,0) - fx - fy + 1/2*fxx + fxy + 1/2*fyy
f(0,-1) = f(0,0) - fy + 1/2*fyy
f(1,-1) = f(0,0) + fx - fy + 1/2*fxx - fxy + 1/2*fyy
f(2,-1) = f(0,0) + 2*fx - fy + 2*fxx - 2*fxy + 1/2*fyy

って感じに25個の式ができます。
(ただし、1個は、f(0,0)=f(0,0)という恒等式になってしまうので、実質的には24個の式)
この24個の式を使って、5つの未知数、fx, fy, fxx, fxy, fxx を決めます。
未知数より式の数のほうが多いわけで、24個の式全てを完全に満たすことはできません。
なんで、ならかの指針で、適当に決める必要があります。

例えば、24本全ての式を同程度満たすべきとするなら、
各式の誤差(=左辺-右辺)の2乗を24本の式について総和をとったものが、最小になるように、fx, fy, fxx, fxy, fxxを決めればよいでしょう。

あるいは、下に書いたように、中心に近い画素の式のほうが、中心から遠い画素よりも重みを重くするべきだと考えたなら、
各式の誤差の2乗に、重みをかけたものの総和をとったものが、最小になるように、fx、fy, fxx, fxy, fxxを決めればよいでしょう。

いずれにせよ、そうすれば、fx, fy, fxx, fxy, fxx が25個の画素の値の関数として表せたことになります。
後は、それを、
(fxx*fy^2 +fyyfx^2 −2fxyfxfy)/(fx^2 + fy^2)
に代入すればよいです。
で、代入したものを、各画素の値について1次近似すれば、フィルタ行列になるでしょう。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!