OpenCVTensorFlowの機械学習を学んだけれど、よくわからずじまいだったのでOpenCVでの計算処理などの内容を理解することから始めていこうと思いました。画像処理ライブラリなので、画像認証なども実装されています。OpenCVのインストール(makeコマンドを使う)コマンドを叩いてOpenCVをインストールしました。Elipseを使用して開発を行いました。ビルドパス、ネイティブライブラリの設定などを行いました。Java〜OpenCv事始め〜OpenCVの事始め「ハローワールド」を行います。ポイントとしては、OpenCVのライブラリを読み込み携帯で撮った写真「レシート」を読み取り、画面に表示するというものです。写真の表示〜Pythonの実装では、HighGUIというアプリケーション(コマンド)で画像表示を行なっていますが、Java版はJavaFXを使用します。JavaFXのセットアップも行います。OpenCVでの画像表示処理を実装しました。途中エラーが出ましたが、なんとか解消することができました。〜画像の平滑化(smooth())〜画像処理の実行を行います。画像解析に使用するメソッドのようで「平滑化」という処理を実行して見ました。画像をぼかす処理でしたが、この処理を行うことで「輪郭がぼやける」=「境界値の差が縮まる」ということのようです。〜画像にガウシアンフィルタ(GaussianBlur())〜ガウシアンフィルターは「注目画素」を基準にしてそこからの距離によりボケ方を変えるものなようです、「だから何よ?」と言われると自分にもわかりませんでした。〜画像に中央値フィルタ(medianBlur())〜ここまでくると、ターゲットにする色(画素)に対してボケ方を調整しているのだということが理解できました。「ノイズを除去するのにしようする」と書籍には記載がありましたが、機械学習的な目線でいくと「特徴量」に対して何かしらのアプローチができそうです。〜画像の中身をみてみる〜画像データの生データ(プログラム的なデータ)をコンソールに表示して見ました。y[縦])に対して色の値が入っていることがわかりました。〜Matクラスで背景から作成してみる〜「画像処理を行う」ということを大まかに理解できた時の記事になります。ここでは、画像の背景を除去する処理を行いました。〜MatクラスでEllipseしてみる〜Ellipseメソッドを使用してその結果を見て見ます。「エクリプス」ではないので注意です。青い輪っかの画像を回転させる処理でした、なんか画像処理って感じの処理で面白かったです。〜ROIについて〜画像認証に近づいていきます。ROIというのは「指定の範囲をターゲッチングする」処理のことで、例えば人の顔を見つけようとした時に検証する画像の範囲(ROI)を指定するというものです。〜画像編集「足し算」(cvAdd)〜画像の足し算を行います。単純に画像Aと画像Bを合成する。いうイメージを持っていたのですが、画素の足し算処理だったようです。〜画像編集「引き算」(cvSubtract)〜上の記事では足し算の意味(用途)がイマイチわからなかったので復讐ではないけれど、少し掘り下げて見ました。同様に引き算処理も行って見ました。「画素の加減算」のようでした。〜画像の掛け算〜「掛け算」だと思っているのですが、「アルファブレンド」と記載があったのでアルファブレンドの処理を行って見ました。この記事は画像のA,Bを合成するという処理になります。ピクセル数」の配列になっているのでそれを行列として見てみると理解がしやすいです。その行列の指定位置の画像を切り抜くという処理が「submat()」でした。〜画像の論理演算〜画像の論理演算は画像を合成するようなイメージです。アルファブレンドと同じような感じですが、用途が違うのでしょうか?その部分は自分は、わかりませんでした。Lv10〜画像の平均輝度をだす〜正直のところよくわかりませんでした。わかったのは、四角の画像が背景と同じような色になったということくらいです。ビデオキャプチャ〜カメラからの入力を表示〜JavaFXらしい処理になります。カメラで取り込んだ画像を表示します。デジタルカメラの撮影前のような画像を表示します。まとめこんな感じでOpenCVを学習して見ましたが、機械学習の理解までは届かずじまいでした。画像のデータのようにたくさんのデータを処理するというところは一緒なので、以下のような解析処理は実装できそうです。書く値に対してぼかし処理を入れるとグラフの上下差が縮まるぼかし方を変更してやることもできるここからはまだまだ理解を深めていく必要があります。