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