画像解析

tesseractでのOCR(横書きの資料 縦書きの資料)

目次 1. tesseractとは 2. Tesseractの特上 3. Tesseractの出力品質向上 4. tesseractの実験(コード) 4.1 横書きの資料 4.2 縦書きの資料 5. まとめ   1. tesseractとは Tesseractは、オープンソースの光学文字認識(OCR)エンジンであり、文字を含む画像データからテキストデータを抽出するために使用されます。Tesseractは、元々ヒューレット・パッカード(HP)研究所で開発され、その後Googleによって取得され、オープンソースプロジェクトとしてリリースされました。Tesseractは高い精度で様々な言語のテキストを認識でき、印刷されたテキストや手書きのテキスト、さまざまなフォントやスタイルのテキストなどを処理する能力を持っています。   2. Tesseractの特上 – オープンソース: Tesseractはオープンソースプロジェクトであり、誰でも無料で使用できる上に、カスタマイズや拡張も可能です。 – 多言語サポート: Tesseractは多くの言語をサポートし、さまざまなテキストの書体や表現を認識できます。 – 高度な画像処理: Tesseractは内部で画像処理アルゴリズムを使用して、画像の前処理を行います。これにより、劣悪な画像品質でも比較的良好なOCR結果を得ることができます。 – コマンドラインツールとライブラリ: Tesseractはコマンドラインツールとしても使用できるほか、ライブラリとして他のアプリケーションに統合することも可能です。 – 学習とカスタマイズ: Tesseractは一般的なフォントやスタイルに対する事前学習がされており、特定のフォントや言語に適応させることも可能です。 – 活発なコミュニティ: Tesseractは大規模なコミュニティに支えられており、新機能の追加やバグ修正が継続的に行われています。   3. Tesseractの出力品質向上 OCRの結果を向上させるために画像の改善が重要です。 リスケーリング、2値化、ノイズ除去、膨張、収縮などの操作を適用します。   リスケーリング: – 少なくとも300 DPIの画像を使用して最適な結果を得ます。 – 大文字の高さの最適なピクセル値が解像度に影響します。   2値化: – …

tesseractでのOCR(横書きの資料 縦書きの資料) Read More »

OpenCVの物体追跡

  目次 1. OpenCVの物体追跡の概要 1.1 物体追跡とは 1.2 OpenCV 2. 実験 2.1 環境の準備 2.2 コード 2.3 結果の動画   1. OpenCVの物体追跡の概要 1.1 物体追跡とは 物体追跡とは,与えられた動画から,指定した対象が各画像間でどのように移動したかを推定することです。動画の中を移動する物体の動きをトラッキング(追跡)することが出来れば、その物体の変位や速度、加速度といった物理量を計算することが出来ます。   1.2 OpenCVの物体追跡 OpenCVには物体追跡アルゴリズムがopencv-contrib-pythonとして提供されています。画像処理の方法がOpenCVに6つ実装されています。   MIL(Multiple Instance Learning) 考え方としてはBoostingにとても近いけど、分類対象の場所の近傍のサンプルについてもいくつか正の場所として扱うことが特徴です。 cv2.TrackerMIL_create()   KCF(Kernelized Correlation Filters) MILの近傍サンプルにはそれぞれ同士でオーバーラップする部分があって、その領域を加味することで性能を上げたらしいです。 cv2.TrackerKCF_create()   TLD(Tracking, learning and detection) 性質上、似たような他のものとの入れ替わりには引っ張られたりすることがあります。ただ、長い間遮られたりするものやスケールが大幅に変わるものには適しているらしいです。 cv2.TrackerTLD_create()   MedianFlow オブジェクトを時間的に順方向および逆方向の両方で追跡して、これらの軌跡間の差異を測定します。 cv2.TrackerMedianFlow_create()   GOTURN 深層学習を使ったトラッキング手法なため、向いているハードウェアに搭載すればとても早いらしいです。 cv2.TrackerGOTURN_create()   MOSSE …

OpenCVの物体追跡 Read More »

pythonでの画像データお互い変換

目次 画像データロード – IPythonで画像データを表示 OpenCV – cv型データを読み込み – cv型データを表示 – Matplotlibでcv型データを表示 – cv型データ→pil型の変換 – cv型データ→sk型の変換 Pillow – pil型データを読み込み – pil型データを表示 – io.BytesIOでpil型データを表示 – Matplotlibでpil型データを表示 – pil型データ→cv型の変換 skimage – sk型データを読み込み – sk型データを表示 – Matplotlibでsk型データを表示 – sk型データ→cv型の変換 – sk型データ→pil型の変換 Matplotlib – Matplotlib型データを読み込み – Matplotlib型データを表示 PythonはOpencv、Pillow、 scikit-image、Matplotlibなどの複数便利なライブラリがあります。各ライブラリはデータ型が違います。今回の記事は画像データお互い変換をまとめたいと思います。それぞれのライブラリで特徴があります。 実験の環境は google colabです。 画像データロード # 画像をロード import urllib import urllib.request img_src = “https://upload.wikimedia.org/wikipedia/commons/thumb/0/01/Origami_cranes_on_match_heads.jpg/320px-Origami_cranes_on_match_heads.jpg” img_file = ‘image.jpg’ urllib.request.urlretrieve(img_src, img_file) (‘image.jpg’, …

pythonでの画像データお互い変換 Read More »

Pythonでの魚眼フィルター

目次 1. 魚眼フィルター 2. 実験: _2.1 画像の読み込む _2.2 魚眼フィルターの関数 _2.3 結果   1. 魚眼フィルター(fisheye) 魚眼フィルターとは、魚眼レンズを通して見たかのように、イメージを歪めます。結果は、樽型歪曲という、超広角の歪みのエフェクトになります。下記のような画像の加工になります。 2. 実験: 環境: google colab 入力データ:ウィキメディアの画像データ モデル:魚眼フィルターの関数 Gil-Mor/iFish   Imageioのライブラリをインストールします。 !pip3 install numpy imageio   ライブラリをインポートします。 # 画像をロード import urllib import urllib.request import sys import fish import imutils from IPython.display import Image   fishのモジュールをインストールします。 #  Import scripts sys.path.append(”) py_src = “https://raw.githubusercontent.com/Gil-Mor/iFish/master/fish.py” py_file = ‘fish.py’ urllib.request.urlretrieve(py_src, py_file) import fish   2.1 画像の読み込む # 画像をロード img_src = “https://upload.wikimedia.org/wikipedia/commons/thumb/a/a7/Chess_board_blank.svg/472px-Chess_board_blank.svg.png” …

Pythonでの魚眼フィルター Read More »

pythonでQRコード画像生成・読み取り(PyQRCode・pyzbar)

  目次 1. QRコードの概要 2. PyQRCode 3. 実験のコード _3.1 環境準備 _3.2 QRコードの生成(Encode) _3.3 QRコード画像の読み取り(Decode) _3.5 QRコード動画の読み取り(Decode)   1. QRコードの概要 どこにでもあるQRコードはpythonでどう生成しますか?この記事はこの質問に回答します。 QRコードの生成と読み取るPythonは複数のパッケージがあります。今回はPyQRCode・pyzbarを解説します。   2. PyQRCode PyQRCodeのパッケージはQRコード作成、エラー修正、QRコードのバージョン、Encodeのモードなどを設定することができます。 pyqrcode.create(content, error=’H’, version=None, mode=None, encoding=None) content(コンテンツ): QRコード error(エラー): ・‘L’ コードの7%を修正できる。 ・‘M’ コードの15%を修正できる「M」。 ・‘Q’一般)コードの25%を訂正できます。 ・‘H’ コードの30%を修正できる。 version(バージョン): ・バージョンは1から40まで設定ができます。バージョン1が最小のQRコードで、バージョン40が最大です。 mode(モード): ・整数をエンコードするために使用される「数値」。 ・一部のASCII文字をエンコードするために使用される「英数字」。 ・「漢字」モードは日本語の文字に使用できますが、shift-jis文字列エンコードで理解できる文字のみです。 ・バイトをQRコードに直接エンコードする「バイナリ」モード   3. 実験のコード 環境:Google Colab Pythonパッケージ:PyQRCode, pypng, pybar …

pythonでQRコード画像生成・読み取り(PyQRCode・pyzbar) Read More »

Object Detection (英)

In computer vision, object detection is one of the tasks that AI shows remarkable result. Each object detection task has different models and creates different level of output. This is my wrap-up of object detection tasks. Image Classification Image Classification detects class from overall image input and returns class with probability. classes = [“dog”, “cat”, …

Object Detection (英) Read More »

OpenCVのWatershedで画像の領域分割

  目次 1. Watershed画像分割とは 2. OpenCVのWatershed 3. 実験 _3.1 データロード _3.2 画像加工 _3.3 輪郭検(findContours) _3.4 画像分割(watershed) 前回の記事は「OpenCV-Pythonでの図形検出、図形数える」を説明しました。Contoursのモジュールは、領域輪郭の図形検出ができますが、画像の領域分割はできません。画像分割の場合は、OpenCVのWatershedアルゴリズムを利用します。Watershedアルゴリズムとは、くっついているものを分離する事もできる古典的領域分割アルゴリズムです。日本語だと分水嶺アルゴリズムと言われています。画像の輝度勾配を山嶺とみなし、山の高い(= 輝度値の高い)位置から流れ込む水の作る領域をひとつの領域とする分割を行います。そのため輝度がはっきりと異なる場合は、弱いアルゴリズムです。 1. Watershed画像分割とは Watershedは、得られた画像を意味のある領域に分割する事は重要な技術です。Watershedアルゴリズムは画像ピラミッドによる画像のセグメント化・平均値シフト法による画像のセグメント化します。 2. OpenCVのWatershed cv.watershed(image, markers) image : 入力画像 markers:  画像のマーカー(画像と同じサイズ) https://docs.opencv.org/master/d7/d1b/group__imgproc__misc.html#ga3267243e4d3f95165d55a618c65ac6e1 3. 実験 環境:Google Colab データセット:硬貨の画像 ライブラリ:OpenCV 分析:画像分割(watershed) 3.1 データロード ライブラリインポート import cv2 import numpy as np import imutils from IPython.display import Image 画像のファイルを表示します。 img_file = “coin02.png” Image(img_file) 3.2 画像加工 pyrMeanShiftFilteringで同様の色分布で色を中和します。 image = cv2.imread(img_file) shifted = cv2.pyrMeanShiftFiltering(image, 21, 51) …

OpenCVのWatershedで画像の領域分割 Read More »