Help us understand the problem. What is going on with this article?

画像処理100本ノックを「Google Colaboratory」で楽々学習

スクリーンショット 2019-02-12 13.09.57.png

画像処理100本ノックとは

 以下のような素晴らしい記事を発見しました。

画像処理100本ノックを作ったった

 画像処理を、OpenCV等の高度なライブラリを使わず行うことで、画像処理の理解を深める、非常に有用な練習問題集です。自分も画像処理の基礎を学びなおしたかったので、自己学習のため活用させていただくことにしました。

 ただ、初学者にとってハードルになりそうなのが、環境構築のところです。GitHubのREADMEに丁寧に描かれているのですが、初学者にとっては難易度高く、時間もかかります。また、自宅以外の環境でちょっと学習したいときなどにも不便です。

 そんな手間を解消するために、Googleが提供している環境構築不要・無料でPythonの開発が可能なWebサービス「Google Colaboratory」を使って、画像処理100本ノックが動く環境を構築してみました。

「Google Colaboratory」上に画像処理100本ノックの環境を構築

 Google Colaboratory自体で何ができるか、便利な使い方TIPS等に関しては、以下記事参照ください。

Google Colaboratoryを使えば環境構築不要・無料でPythonの機械学習ができて最高

Google Colaboratoryを便利に使うためのTIPSまとめ

 基本的には、Google Colaboratory(Google Colab)上で画像処理100本ノックのコードがそのまま動くのですが、いくつか気をつけるべきポイントがあるので、それらに関して説明いたします。

 本記事の最後に、実際に演習問題を解いているGoogle Colabのノートブックへのリンクも貼っています(まだやりかけです)。こちらはコピーすればそのまま動きますので、合わせて参考にしてみて下さい。

必要なライブラリのインストール

 以下コマンド実行することで、必要なライブラリをインストールします。

import cv2
import matplotlib.pyplot as plt
import numpy as np

テスト画像のダウンロード

 テスト画像を以下のコマンドでダウンロードします。

!wget https://raw.githubusercontent.com/yoyoyo-yo/Gasyori100knock/master/Question_01_10/imori.jpg

画像の読み込みと表示

 以下コマンドで画像の読み込みと表示を行います。

img = cv2.imread("imori.jpg")

plt.axis('off')
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))

 以下のように画像が表示されます。
スクリーンショット 2019-02-12 13.09.57.png

画像の保存と読み込みと表示

 一旦画像をファイルに書き出してから読み込んで表示する方法です。

cv2.imwrite("out_img.jpg", img)
out_img = cv2.imread("out_img.jpg")
plt.axis('off')
plt.imshow(cv2.cvtColor(out_img, cv2.COLOR_BGR2RGB))

まとめ

 上記のポイントに注意すれば、画像処理100本ノックをGoogle Colab上で学習できると思います。どの問題も、OpenCVを使えばAPI1つ呼び出して出来てしまうのですが、このように画素レベルで、アルゴリズムを理解しながら手を動かすのは、基礎固めに非常に重要なことだと思います。

 私も、以前PythonでOpenCVに頼らずNumpy+PILで画像処理のフィルタを1から作って理解するということをしてみましたが、やっぱり自分で手を動かして実装した内容というのは、理解が深まりますし、自身もつきます。

 100本ノック全部やれば、相当力つきそうなので地道にこなしていきたいと思います。

 以下が、Google Colab上で学習中の画像処理100本ノックのノートブックです。まだ全然途中なので制覇せねば…

画像処理100本ノック(Google Colab版)途中

 また、写真に興味ある人は、RAW現像をブラウザ上で実行できる以下記事も興味深いのではないかと思います。もしよろしければ参考にしてみて下さい。

Google Colaboratoryを使ってブラウザでRAW現像

関連ページ

Python関係の「○○100本ノック」のまとめ

変更履歴

  • 2020/06/17 関連ページ追記
karaage0703
闇のエンジニア/変なデジカメ開発中/ディープラーニング芸人/Raspberry Piとからあげ大好き/はてなブログ書いてます
https://karaage.hatenadiary.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away