Giter Club home page Giter Club logo

gasyori100knock's Introduction

画像処理100本ノック!!

画像処理の初学者のための問題100問。

これは画像処理の基本的処理の知識を身に着け、アルゴリズムを理解するための100本ノックです。

ここに載っている問題はOpenCVでAPIが用意されているものが殆どですが、あえてそれを自分の手で実装してください。

  • まだ作成中なので、随時更新していきます。なので問題の難易度の順番もめちゃくちゃです。
  • なるべくポピュラーなものを採用していますが、ネタ切れであんまり聞かないものもあります笑
  • 内容はいろいろな文献を調べて載っけてるので正しくないものもあるかもしれないので注意して下さい
  • 【注意】このページを利用して、または関して生じた事に関しては、私は一切責任を負いません。すべて自己責任でお願い致します。

英語版を作ってくれた方がいました。English is here ( thaks https://github.com/KuKuXia )

https://github.com/KuKuXia/Image_Processing_100_Questions

Recent

  • 最近息切れしてきた
  • 【New!】2019.1.16. Q.65 Zhang-Suenの細線化 を追加
  • 【New!】2019.1.16. Q.32 - 35 フーリエ変換 を追加
  • 【New!】2019.1.16. Q.61 - 64 細線化 を追加
  • 2019.1.15 Q.4 大津の二値化 Q.5 HSV を修正
  • 【New!】2019.1.14. Q.58 - 59 ラベリング, Q.60 アルファブレンドを追加
  • 【New!】2019.1.11. Q.54 - 57 テンプレートマッチングを追加
  • 【New!】2019.1.10. Q.27 Bicubic や Q.36-40 JPEGにおける解答を一部修正しました。(画素値がオーバーフローした箇所の修正)、Tutorailにも説明を追加
  • 【New!】2019.1.10. Q.51-53 モルフォロジー勾配 などを追加
  • 2019.1.9. Q.47-50 モルフォロジー処理 などを追加

環境設定

Python-3.6でやって下さい。 (解答はPython-3.6です)

1. Minicondaのインストール

https://conda.io/miniconda.html のサイトからMinicondaをインストールします。

Minicondaがインストールできたら、以下コマンドで仮想環境を作成します。

$ conda create python=3.6 -n gasyori100

作成できたら、以下コマンドで仮想環境を動作します。

$ source actiavte gasyori100

するとこうなります。

(gasyori100) :~/work_space/Gasyori100knock/ :$ 

2. パッケージのインストール

以下のコマンドで必要なパッケージをインストールします。

$ pip install -r requirement.txt

3. 画像処理チュートリアル

以下のファイルを作成し sample.py という名前で保存し、実行します。

import cv2

img = cv2.imread("assets/imori.jpg")
cv2.imshow("imori", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
$ python sample.py

これで以下の画像が表示されれば成功です! 何かボタンを押せば消えます。

次に画像処理に関するnumpyの扱い方のためにTutorialフォルダを見てみて下さい。(もう知ってるという人はスキップして下さい。)

これからは問題を解いていってください。それぞれのフォルダに問題内容が入っています。 問では assets/imori.jpg を使用して下さい。 各フォルダのREADMEに問題が書いてあります。

  • チュートリアル >> Tutorial
  • 問題1-10 >> Quetion_01_10
  • 問題11-20 >> Question_11_20
  • 問題21-30 >> Question_21_30
  • 問題31-40 >> Question_31_40
  • 問題41-50 >> Question_41_50
  • 問題51-60 >> Question_51_60
  • 問題61-70 >> Question_61_70
  • 問題71-80 >> Quesiton_71_80
  • 問題81-90 >> Question_81_90
  • 問題91-100 >> Question_91_100

注意

  • 本稿は画像処理の基礎的な知識・理論を学ぶための教材です。
  • 解答ではなるべくコードを簡易化するために、main( )などを使用してしません。
  • numpyを使用しますが、numpyに関する基本知識は載せません。各自調べて下さい。

問題

になっている問題は解答未作成

番号 問題 番号 問題
1 チャネル入れ替え 6 減色処理
2 グレースケール化 7 平均プーリング
3 二値化 8 Maxプーリング
4 大津の二値化 9 ガウシアンフィルタ
5 HSV変換 10 メディアンフィルタ
番号 問題 番号 問題
11 平滑化フィルタ 16 Prewittフィルタ
12 モーションフィルタ 17 Laplacianフィルタ
13 MAX-MINフィルタ 18 Embossフィルタ
14 微分フィルタ 19 LoGフィルタ
15 Sobelフィルタ 20 ヒストグラム表示
番号 問題 番号 問題
21 ヒストグラム正規化 26 Bi-linear補間
22 ヒストグラム操作 27 Bi-cubic補間
23 ヒストグラム平坦化 28 アフィン変換(平行移動)
24 ガンマ補正 29 アフィン変換(拡大縮小)
25 最近傍補間 30 アフィン変換(回転)
番号 問題 番号 問題
31 アフィン変換(スキュー) 36 JPEG圧縮 (Step.1)離散コサイン変換
32 フーリエ変換 37 PSNR
33 フーリエ変換 ローパスフィルタ 38 JPEG圧縮 (Step.2)DCT+量子化
34 フーリエ変換 ハイパスフィルタ 39 JPEG圧縮 (Step.3)YCbCr表色系
35 フーリエ変換 バンドパスフィルタ 40 JPEG圧縮 (Step.4)YCbCr+DCT+量子化
番号 問題 番号 問題
41 Cannyエッジ検出 (Step.1) エッジ強度 46 Hough変換・直線検出 (Step.3) Hough逆変換
42 Cannyエッジ検出 (Step.2) 細線化 47 モルフォロジー処理(膨張)
43 Cannyエッジ検出 (Step.3) ヒステリシス閾処理 48 モルフォロジー処理(収縮)
44 Hough変換・直線検出 (Step.1) Hough変換 49 オープニング処理
45 Hough変換・直線検出 (Step.2) NMS 50 クロージング処理
番号 問題 番号 問題
51 モルフォロジー勾配 56 テンプレートマッチング NCC
52 トップハット変換 57 テンプレートマッチング ZNCC
53 ブラックハット変換 58 ラベリング 4近傍
54 テンプレートマッチング SSD 59 ラベリング 8近傍
55 テンプレートマッチング SAD 60 アルファブレンド
番号 問題 番号 問題
61 4-連結数
62 8-連結数
63 細線化
64 ヒルディッチの細線化
65 Zhang-Suenの細線化

TODO

Hough, Gabor, HOG, TempleteMatching

gasyori100knock's People

Contributors

yoyoyo-yo avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.