OpenCVからLineSegmentDetector(LSD)が消えた


更新日から1年以上経過しています。情報が古い可能性がございます。

OpenCVを4.1.0に上げたところ、LineSegmentDetector(LSD)が消えました。
エラーを見ると、
Implementation has been removed due original code license conflict の表記。

おや?と思ってIssueを見ると、該当のものがありました。
https://github.com/opencv/opencv_contrib/issues/2016

内容を追ってみると、LSDの元論文に付いている実装のコードがAGPL v3で、そのコードをそのまま流用している様子。

ここで、AGPL v3と言うのがまずくて、詳細は公式の記載を見てもらいたいのですが、GPLの公開義務のほか、ネットワークを通じたサービスの利用者へのソースの公開義務が発生します。
https://www.gnu.org/licenses/agpl-3.0.en.html

この該当コードは、OpenCV4.1.0と、OpenCV3.4.6で削除されています。

が、このLSD、いつOpenCVに入ったかを追ってみると、3.0.0時点のドキュメントには既にLSDが入っています。
(2系はcontribも見てみたけれど、無さそう?3で追加された機能?)
つまり、OpenCV3系で、3.4.6未満のバージョンを使っているサービスがある場合、そのコードにはAGPL v3のコードが含まれているという事態です。

これ、全然話題になってないのが不思議なヤバイ状況だと思うのですよ。OpenCVは画像処理に於いてデファクトとなっているライブラリなので、当然それを利用しているサービスも多数あるはずです。それらにAGPL v3のコードが含まれているという事は、それらにもAGPL v3が適用されるはずなのでは?
(ライセンス詳しくなく、間違っていたらごめんなさい)

と言うわけなので、OpenCV3系を使っていて、3.4.6未満のバージョンを利用している人は、今すぐに更新しましょう!

また、OpenCV-contribの方にFastLineDetectorと言うものがあり、LSDの代替としてはそちらを用いれば良さそうです。少し触った感じだと、LSDと凡そ同じ結果が得られる感覚。

ちょっとこれをきっかけにライセンス周りをきちんとしていこうと思います。


コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です