質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

787閲覧

SIFT特徴量の中身を自分で記述することは可能ですか?

deb

総合スコア17

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/01/24 08:29

前提・実現したいこと

機械学習の特徴量抽出に用いられるSIFT特徴量ですが、下記コードのようにパッケージになっているものを皆さん使って、特徴量を抜き出していると思われます。
この中身、具体的には、レベルの違う平滑化した画像からDoG画像を作って、注目点近傍で極大値を探索して、輝度勾配方向を量子化して保存して、という過程を自分で記述したいのです。目的は、この過程を弄って自分の望む特徴量抽出器に改変したいからです。
ところが調べていてもそのようなことをしている取り組みが見つけられないので、そもそも初心者レベルでSIFTの中身を書くことは可能な見立てだったのか怪しく思えてきました。

その点についてアドバイスがあれば教えていただきたいです。
書こうとしても途中思わぬ障害があり上級者でも難しい、とかそんな情報でも構いません。
ソースを紹介していただければ最高ですけども。
どうぞご教授ください。

該当のソースコード

python

1sift = cv2.SIFT_create() 2kp1, des1 = sift.detectAndCompute(gray, None)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自分も OpenCV を使ったことしかなく、自分で実装したことはないので情報だけ載せておきます。

まず原論文を解説記事などを参考に解読し、OpenCV の実装を見て理解するということになるでしょうか

オープンソースなので、GitHub 上でコードは見れます。
sift.cpp

原論文
Object Recognition from Local Scale-Invariant Features
Distinctive Image Features from Scale-Invariant Keypoints

解説記事
SIFT: Theory and Practice
画像局所特徴量と特定物体認識
SIFT

ちなみに SIFT 特徴量は特許が取られてたと思うので、商用利用を考えてる場合は注意してください。

ところが調べていてもそのようなことをしている取り組みが見つけられないので

論文の内容を理解しなければならないことと、OpenCV ですでに提供されてるのでそのような1から実装しようという試みは車輪の再発明になり、あまりないのだと思います。

投稿2019/01/24 08:38

編集2019/01/24 08:40
tiitoi

総合スコア21954

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

deb

2019/01/24 08:57

なるほど。githubはそうやって使うのですね。pythonが少ないのが辛いところですが。 なかなかヘビーなコード量ですけど、まずは読んでみます。 ライセンスに関しては問題ないと思います。情報ありがとうございます。
tiitoi

2019/01/24 09:03

OpenCV の Python 版はただのラッパーで C++ のコードを呼び出しているだけです。 OpenCV の各種アルゴリズムはすべて C++ で実装されています。 たしかに Python とはかなり違う言語なので、未習得の場合は読むために C++ を勉強する必要があるかもしれません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問