4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

bioinspiredモジュールを使ってみた

Posted at

bioinspiredモジュール とは何か?

 bioinspiredはopencv-contribにあるモジュールのひとつで、人間の目👀の識別能力を模した処理アルゴリズムが含まれています。このモジュールを使って役に立つこととしては、逆光になった物体をクリアに表示できることです。モジュール内にはRetinaクラスがありますが、Retinaとは日本語では網膜という意味です。他にもメソッド名には色の色覚を識別する視覚細胞のParvocellular(パルボセルラー)や物体の輪郭を識別する視覚細胞のMagnocellular(マクロセルラー)などの医学英単語に関連する単語が出てきます。

環境構築

venv, pipenv, minicondaなどの仮想環境をつくり、以下のコマンドを実行。

pip install opencv-python
pip install opencv-contrib-python

開発

import argparse
from pathlib import Path

import cv2


def valid_filepath(src: Path):
    if not src.exists():
        print("[error]:ファイルパスが存在しません")
        return False

    if not src.is_file():
        print("[error]:ファイルではありません")
        return False

    if not src.suffix in [".png", ".jpg", ".jpeg"]:
        print("[error]:ファイルが画像ではありません")
        return False
    return True


def exec():
    parser = argparse.ArgumentParser()
    parser.add_argument("src_img")

    args = parser.parse_args()

    input_path = Path(args.src_img)
    if not valid_filepath(input_path):
        return False

    output_folder = Path("OUTPUT")
    if not output_folder.exists():
        output_folder.mkdir()

    # Mat作成
    srcMat = cv2.imread(input_path, cv2.IMREAD_COLOR)

    # Retinaオブジェクト作成
    height, width = srcMat.shape[:-1]
    retina = cv2.bioinspired.Retina.create((width, height))

    # 処理実行
    retina.run(srcMat)

    # 画像を取得
    parvoMat = retina.getParvo()
    magnoMat = retina.getMagno()

    # ファイルに出力
    cv2.imwrite(
        output_folder / f"{input_path.stem}_parvo.png",
        parvoMat
    )
    cv2.imwrite(
        output_folder / f"{input_path.stem}_magno.png",
        magnoMat
    )


if __name__ == "__main__":
    exec()

結果

元画像

sample_0001.jpg

parvo

sample_0001_parvo.png
デフォルトで出力したため少し雑になってしまいましたが、服装の縦シマや背景の家が少し鮮明になったと思います。

magno

sample_0001_magno.png
人物の輪郭がくっきり出てると思います。
DeepLearningでモデルを作成する手間や推論をかけたときに時間がかかりそうだったら、データを前処理するときにこのモジュールを使う選択肢はありだと思います。調べた限りでは商用はOKとのことです。

参考

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?