Giter Club home page Giter Club logo

image-processing-100knock's Introduction

画像処理100本ノック!!

HOMEPAGE >> https://yoyoyo-yo.github.io/Gasyori100knock/

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

問題も答えもjupyterのをみてください(最新版です)

これはイモリと一緒に画像処理の基本的処理の知識を身に着け、アルゴリズムを理解するための100本ノックです。ここに載っている問題はOpenCVでAPIが用意されているものが殆どですが、あえてそれを自分の手で実装してください。解答も載っけてますが、それはあくまで解答です。自分で考えながら実装して下さい。

  • 【注意】このページを利用して、または関して生じた事に関しては、私は一切責任を負いません。すべて自己責任でお願い致します。
  • あくまで趣味ベースで作ったものなので、プルリクエストは受け付けてますが依頼などは一切受け付けません そこをご理解頂けた方のみご利用下さい

もしこれがみなさんのお役に立ったらGithub Sponsorになってください!

Adv

Update

  • 2020.5.30 Question 21-30をjupyter化
  • 2020.5.8 Question 01-20をjupyter化。Google colabで使える様にして環境構築を必要なくしました。
  • 2020.4.27 #git cloneしなくてもいいように使用変更しました
  • 2020.4.27 [Python]チュートリアルを更新 jupyter対応
  • 2019.12.16 自分の持ってる画像で画像処理をためすPoCを追加 IMORI 
  • 2019.11.22 [C++] Q.49~50 モルフォロジー処理(オープンイング、クロージング)を追加
  • 2019.11.21 [C++] Q.48 モルフォロジー処理(収縮)を追加
  • 2019.11.20 [C++] Q.47 モルフォロジー処理(膨張)を追加
  • 2019.10.27 [C++] Q.44~46 Hough直線検出を追加、[Python]の解答を修正
  • 2019.10.22 [C++] Q.41~43 Cannyのエッジ検出を追加, [Python] の解答を修正
  • 2019.9.3 [Python] Q.81~100のAnswerコードをメソッド化
  • 2019.9.2 [Python] Q.61~80のAnswerコードをメソッド化
  • 2019.8.28 [Python] Q.51~60のAnswerコードをメソッド化
  • 2019.8.18 [Python] Q.50までのAnswerコードをメソッド化
  • 2019.8.12 [C++]Q.36-40の解答追加
  • 2019.7.32 [C++]Q.32-35の解答追加
  • 2019.7.23 [C++]Q.30-31の解答追加
  • 2019.7.22 [C++]Q.25-29の解答追加
  • 2019.6.30 Q.21-24のC++の解答追加
  • 2019.6.8 JavaScriptのチュートリアルを追加
  • 2019 Q.11-20 C++ を追加 Q.15 Sobelを修正
  • 2019.3.25 Q.31 フーリエ系 Q.36 DCT, Q.47,48 トップハット変換系を修正
  • 2019.3.13 Q95-100 Neural Networkを修正
  • 2019.3.8 Questions_01_10 にC++の解答を追加!
  • 2019.3.7 TutorialにC++用を追加 そろそろC++用の答えもつくろっかなーと
  • 2019.3.5 各Questionの答えをanswersディレクトリに収納
  • 2019.3.3 Q.18-22. 一部修正
  • 2019.2.26 Q.10. メディアンフィルタの解答を一部修正
  • 2019.2.25 Q.9. ガウシアンフィルタの解答を一部修正
  • 2019.2.23 Q.6. 減色処理のREADMEを修正
  • 2019.1.29 HSVを修正

What language do you use?

どれも以下の内容です

  1. インストール
  2. 画像読み込み・表示
  3. 画像のコピー
  4. 画素をいじる
  5. 画像の保存
  6. 練習問題

MatplotlibとかOpenCVのTips

あとは問題を解いていってください。それぞれのフォルダに問題内容が入っています。問題では assets/imori.jpg を使用して下さい。各フォルダのREADME.mdに問題、解答プログラムがあります。python answers/answer_@@.py とすると解答が出ます。

問題

問題も答えもjupyterのをみてください(最新版です)

画像をここから持ってこなくても、URL指定で読みこめるようにしました

使える画像

assets/imori_128x128.png (イモリの128x128サイズの美しい画像) assets/imori_256x256.png (イモリの256x256サイズのかわゆい画像) assets/imori_512x512.png (イモリの512x512サイズのめんこいお画像) assets/madara_128x128.png (マダライモリの128x128サイズのかわいらしい画像) assets/madara_256x256.png (マダライモリの256x256サイズのかわない画像) assets/madara_512x512.png (マダライモリの512x512サイズのキュートな画像)
 assets/imori_256x256_noise.png (ノイジーなイモリのノイズ入り画像) assets/imori_256x256_dark.png (暗いイモリのかわいい画像) assets/imori_256x256_light.png (明るいイモリのかわいい画像) assets/imori_256x256_gamma.png (gammaされたイモリのかわいい画像)

こういう感じで読み込めます!(詳しくはTutorial)

from skimage import io
img = io.imread('https://yoyoyo-yo.github.io/Gasyori100knock/assets/imori_256x256.png')
番号 問題 Python C++ 番号 問題 Python C++
1 チャネル入れ替え 6 減色処理
2 グレースケール化 7 平均プーリング
3 二値化 8 Maxプーリング
4 大津の二値化 9 ガウシアンフィルタ
5 HSV変換 10 メディアンフィルタ
番号 問題 Python C++ 番号 問題 Python C++
11 平滑化フィルタ 16 Sobelフィルタ
12 モーションフィルタ 17 Laplacianフィルタ
13 MAX-MINフィルタ 18 Embossフィルタ
14 微分フィルタ 19 LoGフィルタ
16 Prewittフィルタ 20 ヒストグラム表示
番号 問題 Python C++ 番号 問題 Python C++
21 ヒストグラム正規化 26 Bi-linear補間
22 ヒストグラムのスケーリングとシフト 27 Bi-cubic補間
23 ヒストグラム平坦化 28 アフィン変換(平行移動)
24 ガンマ補正 29 アフィン変換(拡大縮小)
25 最近傍補間 30 アフィン変換(回転)
番号 問題 Python C++ 番号 問題 Python C++
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+量子化
番号 問題 Python C++ 番号 問題 Python C++
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 クロージング処理
番号 問題 Python C++ 番号 問題 Python C++
51 モルフォロジー勾配 56 テンプレートマッチング NCC
52 トップハット変換 57 テンプレートマッチング ZNCC
53 ブラックハット変換 58 ラベリング 4近傍
54 テンプレートマッチング SSD 59 ラベリング 8近傍
55 テンプレートマッチング SAD 60 アルファブレンド
番号 問題 Python C++ 番号 問題 Python C++
61 4-連結数 66 HOG (Step.1) 勾配強度・勾配角度
62 8-連結数 67 HOG (Step.2) 勾配ヒストグラム
63 細線化 68 HOG (Step.3) ヒストグラム正規化
64 ヒルディッチの細線化 69 HOG (Step.4) 特徴量の描画
65 Zhang-Suenの細線化 70 カラートラッキング
番号 問題 Python C++ 番号 問題 Python C++
71 マスキング 76 顕著性マップ
72 マスキング(カラートラッキングとモルフォロジー) 77 ガボールフィルタ
73 縮小と拡大 78 ガボールフィルタの回転
74 ピラミッド差分による高周波成分の抽出 79 ガボールフィルタによるエッジ抽出
75 ガウシアンピラミッド 80 ガボールフィルタによる特徴抽出
番号 問題 Python C++ 番号 問題 Python C++
81 Hessianのコーナー検出 86 簡単な画像認識 (Step.3) 評価(Accuracy)
82 Harrisのコーナー検出 (Step.1) Sobel + Gaussian 87 簡単な画像認識 (Step.4) k-NN
83 Harrisのコーナー検出 (Step.2) コーナー検出 88 K-means (Step.1) 重心作成
84 簡単な画像認識 (Step.1) 減色化 + ヒストグラム 89 K-means (Step.2) クラスタリング
85 簡単な画像認識 (Step.2) クラス判別 90 K-means (Step.3) 初期ラベルの変更
番号 問題 Python C++ 番号 問題 Python C++
91 K-meansによる減色処理 (Step.1) 色の距離によるクラス分類 96 ニューラルネットワーク (Step.2) 学習
92 K-meansによる減色処理 (Step.2) 減色処理 97 簡単な物体検出 (Step.1) スライディングウィンドウ + HOG
93 機械学習の学習データの用意 (Step.1) IoUの計算 98 簡単な物体検出 (Step.2) スライディングウィンドウ + NN
94 機械学習の学習データの用意 (Step.2) ランダムクラッピング 99 簡単な物体検出 (Step.3) Non-Maximum Suppression
95 ニューラルネットワーク (Step.1) ディープラーニングにする 100 簡単な物体検出 (Step.4) 評価 Precision, Recall, F-score, mAP

TODO

adaptivebinalizatino, poison image blending

Citation

@article{yoyoyo-yoGasyori100knock,
    Author = {yoyoyo-yo},
    Title = {Gasyori100knock},
    Journal = {https://github.com/yoyoyo-yo/Gasyori100knock},
    Year = {2019}
}

License

© Curry yoshi All Rights Reserved.

This is under MIT License.

https://github.com/yoyoyo-yo/Gasyori100knock/blob/master/LICENSE

image-processing-100knock's People

Contributors

yoyoyo-yo avatar kokosabu avatar zpadger avatar harrytsz avatar minido avatar knao124 avatar supernatural avatar c-yan avatar karaage0703 avatar shimamchan avatar wtetsu 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.