タグ

OpenCVと画像処理に関するotori334のブックマーク (55)

  • 画像処理入門講座 : OpenCVとPythonで始める画像処理 | POSTD

    この記事を書くに至ったきっかけ Recruse Centerでは、私は、画像処理の勉強に時間を費やしていました。独学をし始めた頃は、何をするものなのか全く理解しておらず、ただ、文字や輪郭、模様などを識別するのに役立ち、これらで面白いことができる、ということくらいの知識しかありませんでした。 私の情報源は、主にWikipediaや書籍、公開されている大学の講義ノートです。これらの資料に慣れ親しんでくるにつれ、画像処理の世界における基礎を伝えられる「入門向け画像処理」を望むようになりました。 これが、この記事を書こうと思ったきっかけです。 前提条件 この記事は、Pythonが扱えるということを前提に書いています。その他の事前知識は必要ありませんが、NumPyや行列計算に慣れていると理解しやすいでしょう。 初めに 使用するのは、PythonOpenCVPython 2.7 ^(1) 、iPy

    画像処理入門講座 : OpenCVとPythonで始める画像処理 | POSTD
  • OpenCV - cv2.distanceTransform で距離変換を行う方法 - pystyle

    Warning: Undefined variable $position in /home/pystyles/pystyle.info/public_html/wp/wp-content/themes/lionblog/functions.php on line 4897

    OpenCV - cv2.distanceTransform で距離変換を行う方法 - pystyle
  • モルフォロジー変換 — OpenCV-Python Tutorials 1 documentation

    目的¶ このチュートリアルでは, 膨張処理,収縮処理といったモルフォロジー処理について学びます. 以下の関数の使い方を学びます : cv2.erode(), cv2.dilate(), cv2.morphologyEx() etc. 理論¶ モルフォロジー変換は主に二値画像を対象とし,画像上に写っている図形に対して作用するシンプルな処理を指します.モルフォロジー変換には入力画像と 処理の性質を決める 構造的要素 ( カーネル )の二つを入力とします.基的なモルフォロジー処理として,収縮(Erosion)と膨張(Dilation)が挙げられます.他には,この二つの処理を組み合わせたオープニングとクロージングといった処理も挙げられます.このチュートリアルでは,これらの処理を一つ一つ紹介していきます. 1. 収縮(Erosion)¶ 収縮のアイディアは縮む珪藻から来ており,前景物体の境界が浸

  • 輪郭: 初めの一歩 — OpenCV-Python Tutorials 1 documentation

    輪郭とは何なのか理解します 輪郭の検出方法,描画方法を学びます 以下の関数の使い方を学びます : cv2.findContours(), cv2.drawContours() 輪郭とは何か?¶ 輪郭とは同じ色や値を持つ(境界線に沿った)連続する点をつなげて形成される曲線のことです.形状解析や物体追跡,認識お有用なツールになります. 精度よく輪郭を検出するために,二値日画像を使います.そのため,まずはじめにしきい値処理やCannyのエッジ検出などで二値画像を取得します. cv2.findContours() 関数は入力画像を変える処理です.輪郭検出後の処理で入力画像を使用する必要がある場合は,別の変数としてコピーしてください. OpenCVの輪郭検出は,黒い背景から白い物体の輪郭を検出すると仮定しています.物体は白(明るい色),背景は黒(暗い色)と覚えておいてください. import num

  • OpenCV-Python 演習/tutorial_008py

  • OpenCVを使ってマウスイベント(手動)でテニスコート領域を選択できるようにする - Qiita

    やりたいこと ↓の画像のようにテニスコート領域をマウスイベントで選択できるようにします。 具体的には、コート隅の4点をクリックすることで、テニスコート領域を作成します。 テニスボールの着弾点などを記録できるようにしようとしてますが、テニスコート内のどの位置に着弾したかを確認するためには、コートの座標情報が必要となります。 ちなみに、自分の過去記事ですが、OpenCV(Python版)でテニスのボール軌道を検出するなんてこともやってます。 参考にしたサイト その辺うろうろ27km / Python + OpenCV でマウスイベントを取得 こちらのサイトは、コードのかなりの部分を流用させていただきました。 PythonOpenCVで画像処理④【マウスイベント】 onMouse関数についてわかりやすく説明されています。 mouse_event関数の中にマウスイベントで処理する内容を記述 1つ

    OpenCVを使ってマウスイベント(手動)でテニスコート領域を選択できるようにする - Qiita
  • 【Python】基礎行列Fを求めてエピポーラ線を出力してみる!【OpenCV】

    はじめに エピポーラ幾何はなんぞや?という方向けに簡単に説明すると複数のカメラで撮影した物体の対応点からカメラの位置や画像での対応する箇所を求めることができる幾何です。 詳しくはネット上に丁寧に説明している記事がたくさんあるので、そちらを参照してください。 ここでは2つのカメラで撮影した画像の対応点から基礎行列Fを求めてエピポーラ線を出力するところまでを実装していきたいと思います。 あくまでOpenCVでこんな簡単にできるで!って記事です。 基礎行列を求めてくれる関数:findFundamentalMat OpenCVは何でも揃ってます。 基礎行列の計算ロジックとか何も知らなくてもこの関数に対応点を入力値として渡すだけで計算してくれます。流石っすね。 とはいえ計算ロジック等は知っておいた方がいいと思いますけどね。 使い方 行列1と行列2は対応する点を同じ順序で入力します。 メソッド以降は引

    【Python】基礎行列Fを求めてエピポーラ線を出力してみる!【OpenCV】
  • OpenCV 画像の二値化 - Qiita

    概要 OpenCVを使った画像の二値化について書きます。 画像の二値化(自分で閾値を設定) 画像は有名なLenaを使います。 グレースケールで読み込むので、cv2.imreadの第二引数に"0"を書きます。 二値化はcv2.thresholdで行います。 cv2.threshold(画像, 閾値, 閾値を超えた場合に変更する値, 二値化の方法) 閾値と、二値化された画像を返すので、変数を二つ用意(retとimg_thresh)。 import cv2 # 画像の読み込み img = cv2.imread("./data/Lena.jpg", 0) # 閾値の設定 threshold = 100 # 二値化(閾値100を超えた画素を255にする。) ret, img_thresh = cv2.threshold(img, threshold, 255, cv2.THRESH_BINARY)

    OpenCV 画像の二値化 - Qiita
    otori334
    otori334 2021/04/18
    大津の二値化後pngで保存しその後普通の二値化をしてpngで保存すると一番軽い.逆に容量が大きくなる組み合わせがある.最後にjpgで保存すると10倍,pngを経由しないと2倍,大津の二値化を2回繰り返すと3倍.謎だが便利.
  • pythonで画像の陰の除去 - Qiita

    はじめに テスト投稿も兼ねて最近調べて試したことのメモを載せます。 問題などあれば指摘していただけるとありがたいです。 目的:画像中の陰(shade)を除去 画像処理ド素人がスマホで撮影したノート等の写真をきれいにするアプリ的な動きをするものを自分でも作ってみたいと思い立ちました。 まずは画像中にどうしても入ってしまう陰が邪魔なので、これを取り除きます。 影と書くとsilhouetteの意味合いが強くなるそうなので、shadeの意味を込めて陰と表記します。 処理 https://www.jstage.jst.go.jp/article/iieej/36/3/36_3_204/_article/-char/ja/ こちらの論文を参考に、「凹凸係数」を利用して影を除去します。 凹凸係数は画像中のそれぞれの画素を周囲の画素の平均値で除算することで求められ、フィルタサイズより大きい勾配を平坦にする

    pythonで画像の陰の除去 - Qiita
  • Python、OpenCVでマウスのクリック位置を取得する - いぬおさんのおもしろ数学実験室

    OpenCV(画像処理ライブラリ)でマウスのクリック位置を取得します。画像を表示しておき、その画像上でマウスイベント(右クリック、左ダブルクリック、……)が起こったときにコールされる関数を定義します。ここでは左クリックしたときに画像上の座標を取得して、表示することにします。後で写真から立体を再現するとき、画像上のコーナーなどの座標を求める必要があるのでそのときのための準備です。OpenCVのチュートリアル、その他分かりやすいサイトもたくさんありますが、自分用にちょこちょこいじってあります。例によって最小限のコードで。 import cv2 #コールバック関数 #マウスイベントが起こるとここへ来る def printCoor(event,x,y,flags,param): if event == cv2.EVENT_LBUTTONDOWN: print(x, y) img = cv2.imr

    Python、OpenCVでマウスのクリック位置を取得する - いぬおさんのおもしろ数学実験室
  • OpenCVによる台形補正・射影変換を解説【Python】

    OpenCVを使えば、次のように画像を切り抜くことが可能です。 一般的には、台形補正・射影変換(透視変換)とも言われます。 個人的には、台形補正という表現がわかりやすいと思います。 以下では、台形補正で呼び名を統一します。 この記事では、OpenCVによる台形補正のやり方を解説しています。 記事の内容 OpenCVで台形補正を行うための環境【サンプルコード】OpenCVによる台形補正実例で比率調整を行う それでは、上記に沿って解説していきます。 OpenCVで台形補正を行うための環境 この記事では、PythonOpenCVを利用しています。 そして、OpenCVのインストールに関しては、次の記事を参考にしてください。

    OpenCVによる台形補正・射影変換を解説【Python】
  • 画像処理のトーンカーブについての話しをしよう ~LUTはすごいぞ~ - Qiita

    はじめに PythonでOpneCVを使い始めて間もないのですが いろいろ試してつまずいたところなどを つらつら書いていこうと思います. 掻い摘んで話すと LUTってすごいんだな! って思ったので LUT使ってみました! っていう内容です. (結果的に)自作の色調変換関数との性能比較も行いました. ※様々なトーンカーブを扱った記事はこちら>> 動作環境 cmdを快適にしたい方はこちらへ>> 導入 私は大学の授業(ペーパーワーク)でComputer Vision(CV)について学びました. そこではじめて「トーンカーブ」というものに出会いました. トーンカーブとは1 ディジタル画像の各画素は, その濃淡を表す値(画素値)を持っている. 画像の濃淡を変化させるためには, 入力画像の画素値に対し, 出力画像の画素値をどのように対応づけるかを指定すればよい. そのような対応関係を与える関数のことを

    画像処理のトーンカーブについての話しをしよう ~LUTはすごいぞ~ - Qiita
  • OCR前処理としてのOpenCV超解像 - OPTiM TECH BLOG

    R&D チームの徳田(@dakuton)です。 最近は画像とテキストの狭間にいます。 今回記事のまとめ 簡単にまとめると以下のとおりです。 いくつかの超解像(高解像度化)モデルがOpenCV extra modules(opencv_contrib)インストール + コード数行記述で導入可能 超解像に限らず、文字が一定サイズ以上になるような前処理 -> OCR解析 を実施すると、OCR精度改善につながることがある 超解像による見た目の滑らかさに比例して、OCR精度改善につながるわけではない 低計算コストな画像拡大から超解像に変更する恩恵は発生しにくい テスト条件を変えた場合、違った結果になる可能性あり(用いるOCRエンジン、画像の劣化条件、OpenCV未提供の後発モデル利用など) 実験内容 利用するOCRエンジンの実行条件は変えずに、前処理部分のみ変更した場合のOCR精度・速度変化を調べま

    OCR前処理としてのOpenCV超解像 - OPTiM TECH BLOG
  • 画像のしきい値処理 — OpenCV-Python Tutorials 1 documentation

    OpenCVの公式ドキュメントに各フラグがどのよな処理をするか記載されているので,確認してください. cv2.threshold は二つの出力を返します.一つ目の出力 retval については後述します.二つ目の出力がしきい値処理された後の 二値画像 になります. コード : import cv2 import numpy as np from matplotlib import pyplot as plt img = cv2.imread('gradient.png',0) ret,thresh1 = cv2.threshold(img,127,255,cv2.THRESH_BINARY) ret,thresh2 = cv2.threshold(img,127,255,cv2.THRESH_BINARY_INV) ret,thresh3 = cv2.threshold(img,127,2

    画像のしきい値処理 — OpenCV-Python Tutorials 1 documentation
  • ハフ変換による直線検出 — OpenCV-Python Tutorials 1 documentation

    目的¶ このチュートリアルでは ハフ変換の概念を学びます. 画像中から直線検出をするためにハフ変換をどのように使うか学びます. 以下の関数の使い方を学びます: cv2.HoughLines(), cv2.HoughLinesP() 理論¶ ハフ変換は数式で表現できる形状を検出するための一般的な方法です.形状の一部が破損,劣化していたとしても検出できます.ここでは直線検出のためにどのようにハフ変換を使うかみていきます. 直線は もしくは と表せrます.ここで は原点から直線までの距離, は直線の法線と横軸の成す角を反時計回りに表します(この方向は座標系の表現次第で変わります.この表現はOpenCVで使われている者です).以下の画像を確認してください.: もしも直線が原点の下を通過するのであればrhoは正の値,角度は180度未満になります.原点の上を通過する場合は角度は180より大きい値になる