Gasyori100knock

画像処理100本ノック をやります

書いたプログラム 

進捗

  • 8/22 はじめた
  • 8/26 10まで
  • 8/27 20まで
  • 8/30 30まで
  • 9/1 40まで
  • 9/3 50まで
  • 9/6 60まで
  • 9/9 70まで
  • 9/10 80まで
  • 9/20 90まで
  • 9/24 100まで 完走!😃

実装したもの

No.
1チャネル入れ替え
2グレースケール化
3二値化閾値は手動で設定
4大津の二値化閾値を自動決定
5HSV変換Hue(色相) Saturation(彩度) Value(明度)
6減色処理
7平均プーリングCNNでよくやるやつ
8Maxプーリング
9Gaussianフィルタ平滑化、ノイズ除去に使う
10Medianフィルタ平滑化
No.
11平滑化フィルタ(mean)平滑化
12モーションフィルタ線形yakudo
13MAX-MINフィルタエッジ検出、特徴抽出
14微分フィルタエッジ検出
15Sobelフィルタ縦・横方向のエッジ検出
16Prewittフィルタ縦・横方向のエッジ検出
17Laplacianフィルタエッジ検出
18Embossフィルタ輪郭抽出、陰影による凹凸感を出す奴
19LoGフィルタLaplacian of Gaussian、ノイズ除去してからエッジ検出
20ヒストグラム表示
No.
21ヒストグラム正規化Histogram normalization ダイナミックレンジ操作、画素を0~255に引き伸ばす
22ヒストグラム操作平均128、標準偏差a(=52)にする
23ヒストグラム平坦化Histogram equalization 輝度ヒストグラムの偏りを減らす事で視認性を向上させる
24ガンマ補正Gamma correction 明るさの調整
25最近傍補間画像の拡大 最近傍の画素を使う
26Bi-linear補間画像の拡大 周囲4画素の重み付き和
27Bi-cubic補間画像の拡大 周囲16画素の重み付き和
28Affine変換(平行移動)
29Affine変換(拡大縮小)
30Affine変換(回転)
No.
31Affine変換(スキュー)平行四辺形状に変形
32二次元離散Fourier変換(DFT)DFTしてiDFTするともとにもどるよ
33ローパスフィルタ高周波成分が除かれ平滑化
34ハイパスフィルタ低周波成分が除かれる
35バンドパスフィルタ真ん中らへんの周波数だけ通す
36JPEG圧縮1離散コサイン変換(DCT) DCT->iDCTを繰り返すと解像度が下がり画像の容量を減らせる
37PSNRPeak Signal to Noise Ratio信号対雑音比 画像の劣化具合
38JPEG圧縮2 DCT+量子化DCT係数を量子化 データ量削減
39JPEG圧縮3 YCbCr表色系輝度Y,青の色差Cb,赤の色差Cr
40JPEG圧縮4 YCbCr+DCT+量子化これにHuffman符号化を加えるとJPEG圧縮の完成らし
No.
41Cannyエッジ検出1グレースケール化→Gaussianフィルタ→Sobelフィルタ→勾配強度・勾配角度の計算
42Cannyエッジ検出2Non-maximum suppression(NMS)による細線化
43Cannyエッジ検出3ヒステリシス閾処理
44Hough変換1Hough変換 直線検出
45Hough変換2NMSを用いた極大値選択
46Hough変換3Hough逆変換
47morphology処理(膨張)
48morphology処理(収縮)
49オープニング処理収縮→膨張 余分な画素の除去
50クロージング処理膨張→収縮 途切れた画素の結合
No.
51morphology勾配物体の外郭(境界線)を抽出
52トップハット変換細い線やノイズの除去 元画像-オープニング処理画像
53ブラックハット変換クロージング処理画像-元画像 
54テンプレートマッチング SSDSum of Squared Difference 画素値の差分の二乗和が最小のもの
55SADSum of Absolute Difference 画素値の差分の絶対値の和が最小のもの
56NCCNormalized Cross Correlation 正規化相互相関が最大のもの
57ZNCCZero means Normalized Cross Correlation 零平均正規化相互相関が最大のもの
58ラベリング 4近傍
59ラベリング 8近傍
60アルファブレンド
No.
614-連結数0:内部点 1:端点 2:連結点 3:分岐点 4:交差点
628-連結数
63細線化処理
64Hilditchの細線化
65Zhang-Suenの細線化
66HOG1 勾配強度・角度特徴量表現として使われてたらしい
67HOG2 勾配ヒストグラム
68HOG3 ヒストグラム正規化
69HOG4 特徴量の描画
70カラートラッキング青色をトラッキングしたいときはHSV変換して色相180~260らへんを取る
No.
71マスキング
72マスキング(カラートラッキング+モルフォロジー)↑でマスクにクロージング・オープニング処理する
73縮小と拡大bi-linear補間を使用 ぼやけた画像ができる
74ピラミッド差分↑と元画像の差分 高周波成分をとれる
75ガウシアンピラミッド1/2^nに縮小
76顕著性マップ倍率2^nで縮小→拡大したものの差分を足し合わせる 人の目に止まりやすい領域が白くなるらしい
77Gaborフィルタガウス分布+周波数変換 画像の特定方向のエッジ検出
78Gaborフィルタの回転
79Gaborフィルタによるエッジ抽出画像をgrayscale化してフィルタリング
80Gaborフィルタによる特徴抽出角度0,45,90,135でエッジ抽出したものを足し合わせる
No.
81Hessianのコーナー検出ガウス曲率K=det(H)/(1+Ix2+Iy2)2K = det(H) / (1 + Ix^2 + Iy^2)^2が大きくなる点
82Harrisのコーナー検出1Sobelフィルタ→Gaussianフィルタ
83Harrisのコーナー検出2det(H)-k(trace(H)^2)
84簡単な画像認識1教師あり学習 減色化→ヒストグラム化でデータベース作成
85簡単な画像認識2クラス判別 ヒストグラムの差が最も小さいやつ
86簡単な画像認識3評価(Accuracy) 正解数/テスト画像数
87簡単な画像認識4k近傍法 85では差が最小のやつを選んだがここでは差が小さい順にk個とって多数決する
88K-means1教師なし学習 ランダムにクラスを割り当てて重心作成
89K-means2クラスタリング 重心が近い方のクラスに割り当てなおすことを繰り返す
90K-means3最初に割り当てたラベルの状態で結果が変わりやすい
No.
91K-meansによる減色処理1クラス分類 最初ランダムにK個のピクセルをサンプリング 各画素について、クラス内の画素のRGBの平均との距離が最小であるようなクラスに割り振ることを繰り返す
92K-meansによる減色処理2
93機械学習の学習データ用意1IoU(Intersection over union, 矩形の重なり具合)の計算
94機械学習の学習データ用意2ランダムクラッピング GroundTruthとのIoUが0.5以上のもののラベルを1とする
95ニューラルネットワーク1プログラムに関しては https://towardsdatascience.com/how-to-build-your-own-neural-network-from-scratch-in-python-68998a08e4f6  を参照せよ。
96ニューラルネットワーク2入力は元画像から8080で切り抜いた画像を3232にリサイズしてHOG特徴量をとった449次元, 中間層はユニット数64を2つ、出力は1(Sigmoid)
97簡単な物体検出1各画素についてその画素を中心とする複数サイズの矩形を32*32にリサイズしてHOGを取る
98簡単な物体検出296で学習したNNに97で取った特徴量を流し込む
99簡単な物体検出398で検出したBroundingBoxのうち重なっているものをNMSで間引く
100簡単な物体検出4評価 Recall,Precision,F-score,mAP