第1回では、画像認識の概要や基本原理、実例などを紹介しました。第2回の今回は、これから皆さんが画像認識のプログラムを組んでいく上で必要なOpenCVというツールについて紹介します。 OpenCVとは? OpenCVは正式名称を"Intel Open Source Computer Vision Library"と言い、その名のとおりインテル社が開発したオープンソースのC/C++ライブラリ集で、コンピュータ・ビジョンに必要な各種機能がパッケージされています。 具体的には、だいたい以下の処理を行う関数群が用意されています。 線形代数や統計処理など、コンピュータビジョンに必要な各種数学関数 直線や曲線、テキストなど画像への描画関数 OpenCVで使用したデータを読み込み/保存するための関数 エッジ等の特徴抽出や画像の幾何変換、カラー処理等々の画像処理関数 物体追跡や動き推定などの動画像処理用関数
クリスマスだしたまには便利な記事でも書く。 以前少し書いた、ゲームにアニメ風のエフェクトを入れたいという話。アニメ風というのは例えば こういう光線や光輪を指す。ポイントとしては、わざと線の太さを不安定にしたり途切れ途切れにして躍動感を出す、という所。 さて、まず光輪からいくと、左上に(0,0)、右下に(1,1)のテクスチャ座標を指定した矩形ポリゴンを用意する。(次の画像だけ、u,vを赤と緑に割り当てている) 中心が(0.5,0.5)なので、フラグメントシェーダー上でテクスチャ座標と(0.5,0.5)の距離をとって、ある閾値を超えたらdiscardすると円形になる。 void main() { vec2 rpos = v_texCoord - vec2(0.5, 0.5); float r = length(rpos); if (r > 0.5) { discard; } gl_FragCo
ある日のこと、後輩たちがこんなことを言いました。 「ゆゆ式のコマをランダムに並びかえたら無限にゆゆ式が楽しめるのでは?」 真面目に計算してみると、10の15乗くらいの組み合わせができることがわかりました。 この記事ゆゆ式アドベントカレンダー20日目は、そんな無限にゆゆ式をたのしむためのシステムを真面目に作ってみた話をします。 コマの切り出し 漫画のコマを並び替えるためには、コマがバラバラな画像として存在していなければなりません。 なので、まずは自炊で電子化された書籍をコマの線にそって切り出していく処理を自動化することにしました。 上の図がふつうの4コマの1ページですね。これの枠線を識別して、1ページから8枚のコマを取り出してくる方法を考えます。 ハフ変換で直線検出 OpenCVという画像処理のライブラリに直線を検出するツールがあったので、まずこれを試してみました。 が、結果はこのとおり。
一般的に ImageMagick のサムネイル画像生成は遅いとされており、パフォーマンスが求められるシーンでは Imlib2 などのより高速な画像処理ライブラリが使われることが多いです。 Imlib2 の高速さについては、以前「Imlib2でImageMagickより3倍高速かつ美しいサムネイル画像の生成 - 床のトルストイ、ゲイとするとのこと」という記事で紹介しました。この記事のベンチマークにおいて、Imlib2 によるサムネイル画像の生成は、 ImageMagick の3倍程高速でした。 しかし、 ImageMagick は Imlib2 より画質がよく、高機能で使いやすく、今も頻繁にメンテナンスされており、とてもよく出来ています。その点 Imlib2 は、2004年からメンテナンスされておらず、セキュリティホールが見つかっても、各Linuxディストリビューションがそれぞれパッチを当て
rubyで画像処理をする場合には、RMagickが使われます。今回はその中でもウェブアプリケーションを作る上で使用頻度が高いであろう、リサイズのやり方についてご紹介します。 はじめに 本稿で紹介するすべてのサンプルコードは、事前に以下のコードを実行している前提で記述しています。また、破壊メソッドと非破壊メソッドの両方があるメソッドについては、サンプルコードでは特段の理由がない限り破壊メソッドを利用しています。 require 'rubygems' require 'rmagick' scale = 0.3 width = 160 height= 160 サンプル画像は以下を用います。 図1 original.png ※この画像は、「フリー素材屋Hoshino」の素材を使用させていただきました。 画像ファイルの読み込み RMagickで画像ファイルの読み込みを行う場合は、以下のようにrea
第1回、第2回と画像認識の基礎とOpenCVについて紹介してきました。第3回目の今回は、いよいよ本連載の目玉であるOpenCVを使ったオブジェクト検出に挑戦してみます。 オブジェクト検出の仕組み 基本原理のおさらい オブジェクト検出のプログラムを書き始める前に、そもそもどんな仕組みでオブジェクト検出を行っているのかを理解しましょう。 第1回では画像認識の原理として、学習フェーズと認識フェーズがあることを説明しましたが、OpenCVに実装されているオブジェクト検出プログラムもこの流れに従います。つまり、画像から特徴量を抽出し、学習アルゴリズムによってオブジェクトを学習します(詳しくは第1回を参照してください)。 図1 画像認識の流れ OpenCVに実装されているオブジェクト検出プログラムは、Paul Violaらのオブジェクト検出の研究[1]をベースに、Rainer Lienhartらが
お久しぶりです。私事でなかなか執筆の時間がとれず、前回の掲載から長く時間が空いてしまい申し訳ありませんでした。皆さんから寄せられたコメントには非常に励まされました。 というわけで、今回はいよいよ最終回です。前回はオブジェクト検出器を使って顔を検出するところまで行いました。今回は、オリジナルオブジェクト検出器を作成してみます。 今回作成するプログラムのソースコードは、こちらから一括してダウンロードすることができます。 Data.zip 学習の流れと仕組み 学習の流れ 前回のおさらいになりますが、オブジェクト検出器は機械学習という方法を通して作成されます。つまり、コンピュータプログラムに検出したいオブジェクトの画像(正解画像)とそうでない画像(非正解画像)を与えることで、オブジェクトが含まれている画像の傾向というのをコンピュータに覚えさせていきます。 学習の流れを簡単にまとめると以下の通りです
ImageMagick® is a free, open-source software suite, used for editing and manipulating digital images. It can be used to create, edit, compose, or convert bitmap images, and supports a wide range of file formats, including JPEG, PNG, GIF, TIFF, and Ultra HDR. ImageMagick is widely used in industries such as web development, graphic design, and video editing, as well as in scientific research, medic
今回紹介するツール [ツール名]ImageMagick [対象]Windows、UNIX、Linux、Mac OS、iOS [提供元]ImageMagick Studio LLC [ダウンロード先][URL]http://www.imagemagick.org/[英語] アプリ開発者向けの高機能画像変換・編集ツール 「ImageMagick」は、ビットマップ画像(.bmp)を作成、編集、変換するためのオープンソース(Apache 2.0ライセンス)のツールセットです。 ImageMagickは、BMPやGIF、PNG、JPEG、TIFFといった一般的な画像形式はもちろん、PostScript、EPS、SVGといった特殊用途向けの画像形式や、PDFなどのドキュメント形式にも対応しており、画像形式の相互変換やサイズ変更、カラー調整、合成、テキスト/図形の描画、サムネイル作成など、本格的な画像処
この連載では、この表で言う画像認識技術を主に扱いますが、どの技術も非常に活発に研究されており、様々な分野で実用化されています。 画像認識・理解の基本原理 画像認識の基本原理 画像認識は、学習のフェーズと認識のフェーズの2つからなります。学習のフェーズでは、コンピュータに認識させたい対象画像を学習させる処理を行い、認識のフェーズではコンピュータに入力画像が学習した対象かどうかを判定させます。 図5 学習と認識の流れ 学習フェーズ 学習のフェーズでは、まず画像になんらかの処理を施して、ピクセルのデータ列から、より学習に適したデータ列(特徴量データ)へと変換を行います。 次に変換されたデータを、機械学習と呼ばれるアプローチを用いてコンピュータに学習させます。機械学習とは、その名の通り人間が行っているような学習の仕組みをコンピュータに持たせるための技術です。例えば人間は、初めて見る人の顔画像でも、
類似画像検索手法について簡単にまとめました。 はじめに 画像検索には主に2種類の手法がある。 TBIR (Text Based Image Retrieval) 画像にテキストデータが紐付けられていて、テキストを元に検索する CBIR (Content Based Image Retrieval) 画像の特徴量を基盤として検索する ライブラリ Feature Extraction Library - FELib http://appsrv.cse.cuhk.edu.hk/~jkzhu/felib.html 下記の5つの特徴を持つ画像から特徴量を抽出できるライブラリである。 Color histogram, color moments. カラーヒストグラム・色統計) Edge histogram. 輪郭のヒストグラム Gabor wavelets transform. Wavelet tra
パソコンを始めとして、様々な電子機器で、高度な画像処理が求められるようになってきている。 スマートフォンのアプリやデジカメでも、本格的なフォトレタッチ機能が搭載されており、これらを利用している人も多いだろう。 こうした画像処理プログラムの開発でキーとなるのが「並列化」だ。画像を処理する場合、大量のデータに対して同じ変換処理を行っていくことが多い。こうした処理を行う際、画像を細かな単位に分割して、同時に処理を行うことができれば実行時間を短くできる。今ではスマートフォンにも搭載されているGPUは、処理を同時並列的に、実行するために設計された画像処理用のプロセッサだ。しかし、並列処理に最適化されたプログラムコードを書くのは、非常に手間がかかる。プログラマーは、どのようなアルゴリズム(計算方法)で画像処理を行うかということに加え、それをどう並列化するかということまで考えないといけないからだ。 MI
こんにちは。クライアント基盤チームのよやです。 アバター等を表示する為に PNG や JPEG の画像を元に GIF アニメーションを生成する事がよくありますが、GIF は 256色までしか扱えない為、元画像が数万といった単位で色を使っていると減色処理に大変時間がかかります。そこで、ImageMagick の減色処理を改造して高速化した事例をご紹介します。 尚、一度に読む分量ではまとめ切れない為、前編と後編に分けました。前編は減色処理、後編はその改造について説明します。 プログラム構成では上の図の magick/quantize.c が減色処理に相当します。 まず、減色処理の一般的な話から始めます。 減色の利点 Web で見かける画像ファイルの多くは、1つのpixel(描画の最小単位)に対して、Red, Green, Blue が各々8bits で計 24bits(= 3bytes) 、透
こんにちは。ミドルウェア開発チームのよやです。 今回は、ImageMagick についてお話します。 http://www.imagemagick.org/ ImageMagick は高機能で大変便利な画像処理ツールです。弊社でも利用させて頂いていますが、稀に実サービスにそのまま適用出来ないケースがあります。 そこで、困った時に ImageMagick 自体を改造する際のポイントと、実際の応用例をご紹介します。 ImageMagick のプログラム構造 ImageMagick のプログラムは主に以下のディレクトリに分かれます。(Magick+ ディレクトリ等幾つかは割愛します) utilities/<コマンド名>.c コマンドラインツールの起点(main 関数) wand/〜.c (コマンド共通処理とコマンド毎の処理、Wand API) magick/〜.c (機能モジュール、ユーティリテ
画像として与えられた数独を解きます。 新聞に掲載されていたこの問題をOpenCVを使って画像解析する。(画像が斜めなのはワザとです) グレースケール変換画像解析の前処理として、まずグレースケールに変換し、ガウシアンフィルタをかけてぼかします。ガウシアンフィルタをかける事で、安定した二値化画像が得られます。 二値化次に二値化を行います。 二値化には、普通の方法、大津さんの手法、適応的二値化、などさまざまな手法が在ります。いろいろ試した所、適応的二値化(Adaptive Threshold)が最も数独の認識に適していることが解りました。 適応的二値化(Adaptive Threshold)であれば、影になってしまった部分も上手く処理できます。 膨張処理次に、数独の盤面の外枠を認識を行います。 二値化の影響で枠線が途切れてしまう可能性がありますので、膨張処理(dilate)を行います。 (膨張処
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く