酢ろぐ!

カレーが嫌いなスマートフォンアプリプログラマのブログ。

開発-画像処理

AndroidでColorからYCbCrを計算する

iOSでUIColorからYCbCrを求めました。 SwiftでUIColorからYCbCrを計算する - 酢ろぐ! 本記事ではAndroid-JavaでColorからYCbCrを計算してみました。 YCbCrのフォーマットについて 12年ほど前にRGB888からYCbCr422に変換するC言語のコードを書いていたようで…

SwiftでUIColorからYCbCrを計算する

コード自体はいままで何回も書いている気がしますが、自分のブログを探しても見つからなかったので、次にSwiftでRGBからYCbCrを計算したいときにコピペして使うようにの備忘録として記事を残しておきます。 YCbCrのフォーマットについて 12年ほど前にRGB888…

ポケモンカードゲームのカードをTensorFlowで学習させて写真からどのポケモンかを判定させる

2年くらい前に「機械学習」や「ディープラーニング」といった感じにキーワードだけが先行して飛び交っていた時期がありました。猫も杓子もAIとニュースになっていました。ここ最近では、そういった流行り技術から実用技術へシフトしたのか、以前のように「デ…

ポケモンのお見合い画面を画像解析して選出予想をしたい(1)

ここ最近、ポケモンのシングルレートをやっているのですが負けが続いています。 気晴らしではないのですが、バトル開始前のお見合い画面(選出画面)で相手が見せてきたポケモンをカメラで撮影して簡単に一覧化できないか試してみました。ポケモンの特定までは…

Pokétomoで稀にカイロスがキャタピーと誤認識されてしまう問題

Pokémon GO用のポケモンの個体値を計算するアプリを作っています。 (公開停止しました) Pokétomoではスクリーンショットを解析して個体値を求めるのですが、今回稀にカイロスがキャタピーと誤認識されてしまう問題についてメモしておきたいと思います。 個体…

自動エアコン調整システムを考える(1) - 部屋の間取りとシステムの基本構成

うちの天使でもあるキンクマハムスター(長毛種)のみそあんです。下の写真はゲージから脱獄しようとしてるところですね。 ハムスターは賢いのかアホなのか分からないのですが、試行錯誤を繰り返して安定的に天蓋まで登る方法見つけます。少し前に外出中にみそ…

iOSで1色だけの空のUIImageを新しく作る

// 1色だけの空のUIImageを作る - (UIImage *)imageWithColor:(UIColor *)color rect:(CGRect)rect { UIImage *image = nil; // ビットマップ形式のグラフィックスコンテキストの生成 UIGraphicsBeginImageContext(rect.size); // 現在のグラフィックスコン…

iOSで任意の領域をクリッピング(トリミング)して新しいUIImageを作る

UIImage *srcImage = [UIImage imageNamed:@"test_image"]; UIImage *dstImage = nil; CGRect clipRect = CGRectMake(0, 0, 320, 400); // 指定された画像から指定された範囲の抜き出す CGImageRef cliped = CGImageCreateWithImageInRect(srcImage.CGImage,…

OpenCVで透視投影変換する

cvGetPerspectiveTransform関数とcvWarpPerspective関数を使って、透視投影変換させてみました。OpenCV for Windows Phoneのテストのために透視投影変換を実装してみましたが、Windows Phoneに依存する部分がない(とても少ない)ため、その他のプラットフォー…

めも 2

やりたいことがたまっていく……。前のめもも実装できてない。 最近はもっぱらWindowsストアアプリについてしか書けていないのですが、公私ともにやっていることが画像処理に偏っています。 OpenCVを使った分類器を使用したマーカー認識(opencv_objdetect)につ…

めも

外接矩形と透視変換をマネージコードで実装したいなぁ。透視変換は射影変換とも言うらしい。あとでやる 「外接矩形座標」を求める 透視投影された平面を正面から見たように変換したい - 質問・相談ならMSN相談箱

彩度調整その2 〜C#でRGBからHSVへの変換、HSVからRGBへの変換〜

「彩度調整 - 酢ろぐ!」では、彩度を求める計算を簡略化していたのですが、NuGet Pakageを作るついでにチェックしていると計算ロジックが微妙かも……と思ってしまったので、ピクセルデータを一旦HSVへ変換した上で彩度を調整し、RGBに戻すように調整しました…

usage WriteableBitmapEffector

日本語での紹介文は こちらをご覧ください。 Sorry. I have very easy english. Please tell me if there is a place can not understand the meaning. Has a sample application. This library is those who want to serve you hope you will make a good l…

WriteableBitmapEffectorの使い方

Described in English, please see here. Metroスタイルアプリで画像を扱うのが面倒くさかったので作ってみました。WriteableBitmapExがMetroスタイルアプリに対応して、並行で使われることになっても機能が被らないようにしています。名前は芸もなく「Write…

OpenCVをインストールする Windows 8(Release Preview)編

Windows PhoneでOpenCV使えないかなぁーと心の底から思っています。むしろMetroスタイルアプリでOpenCVが使えたら、わざわざWriteableBitmapEffectorなんていうライブラリ書かなかったのに。 それはさておき、以前、iOSでOpenCV使ったときにインストールの仕…

C++/Cx で書いたクラスを C#で書いたWindowsストアアプリで使う

誰得かわからないけど書く。ちょうど画像処理関係をいじっていることもあって、簡単に実装可能な「セピア調変換 - 酢ろぐ!」をネイティブ(C++/Cx)で書いて、マネージ(C#)で画像の読み込みとImageコントロールへの設定を実装してみようかと思います。 -アプ…

彩度調整

分割した記事で書かれていたのを「Windowsストアアプリで画像処理をおこなう - 酢ろぐ!」とひとつのエントリにまとめました。以下のエントリをご覧ください。 本記事では「ネガティブ(ネガポジ反転)変換 - 酢ろぐ!」で紹介したIEffectインターフェースをベ…

コントラスト調整

分割した記事で書かれていたのを「Windowsストアアプリで画像処理をおこなう - 酢ろぐ!」とひとつのエントリにまとめました。以下のエントリをご覧ください。 本記事では「ネガティブ(ネガポジ反転)変換 - 酢ろぐ!」で紹介したIEffectインターフェースをベ…

セピア調変換

分割した記事で書かれていたのを「Windowsストアアプリで画像処理をおこなう - 酢ろぐ!」とひとつのエントリにまとめました。以下のエントリをご覧ください。 本記事では「ネガティブ(ネガポジ反転)変換 - 酢ろぐ!」で紹介したIEffectインターフェースをベ…

グレースケール変換

分割した記事で書かれていたのを「Windowsストアアプリで画像処理をおこなう - 酢ろぐ!」とひとつのエントリにまとめました。以下のエントリをご覧ください。 本記事では「ネガティブ(ネガポジ反転)変換 - 酢ろぐ!」で紹介したIEffectインターフェースをベ…

ネガティブ(ネガポジ反転)変換

分割した記事で書かれていたのを「Windowsストアアプリで画像処理をおこなう - 酢ろぐ!」とひとつのエントリにまとめました。以下のエントリをご覧ください。 同じC#というプログラミング言語を使用しているのですが、WinForms、Windows Phone、Metro スタ…

Instagram風のアプリを作るにはどうすればよいのか?エフェクトの作り方を考える

Instagram風のアプリを作るにはどうすればよいのか考えてみた。実例としてWindows Phoneでの実装例をchannel9で紹介されている。 PicFx – Windows Phone Picture Effects Application – Part 2 | Coding4Fun Articles | Channel 9 日本語での記事は、Windows…

OpenCV Tips

OpenCVは画像処理や画像解析および機械学習をおこなうことができるライブラリです。本ブログでOpenCVについて書いたことをまとめています。 画像処理 オブジェクト分類器を作成する 機械学習のための素材画像 (古い)オブジェクト認識学習におけるポジティブ…

YCbCr422のフォーマットについて考えてみよう/RGB888→YCbCr422変換を実装する

「YCbCr422 フォーマット」をキーワードにGoogleで検索してくる方が多いので若き技術者(←妄想)の為に解説します。偏った知識のみで書きますので間違っていたら指摘してください、お願いします。カメラセンサーからRaw画像が出力されます。センサーから出力さ…

動画データ解析ツールを作成する(6) - 3GPP2のフォーマットについて考える

-"ftyp"(ファイルタイプ) -"uuid"(著作権情報) -"moov"(動画データ情報) --"mvhd" --"trak"(映像トラック情報) ---"tkhd" ---"mdia" --"trak"(音声トラック情報) ---"tkhd" ---"mdia" -"mdat"(動画実データ) このBOX(QuickTimeではATOMと呼ばれる)は全部4バ…

動画データ解析ツールを作成する(5) - QuickTime SDKを使って動画ファイルのDimensionを取得する

今まで紹介したQuickTime APIを使用して、動画ファイルのDimension(Videoの表示サイズ)を取得するためのサンプルコードは、下記のとおりになります。 出来る限りエラー処理を省いて、短く書いたつもりなのですが長くなってしまった・・・ |c| include <stdio.h> include <QTML.h></qtml.h></stdio.h>…

動画データ解析ツールを作成する(4) - トラック情報を取得するAPIを調べる

例に従って和訳が適当なので、まともな技術者の方は「http://developer.apple.com/documentation/QuickTime/QuickTimeforWindows-date.html」をお読みください。 |c| /! Movieに含まれるトラック数を取得する @param[in] theMovie Movie識別子 @return トラ…

動画データ解析ツールを作成する(3) - QuickTime SDKを使ってトラック情報から動画サイズを取得する

QuickTime SDKを使ってメタ情報を取り出すのはツライ・・・ 残念ながらプログラミングセンスのない僕には難しいよ。QuickTime SDKの使用はあきらめましたが、トラック情報から動画のサイズを取り出すところまでは実装出来たので、備忘録を兼ねて使用したAPIの説…

動画データ解析ツールを作成する(2) - QuickTime SDKの初期化をおこなう

QuickTime SDKを扱うにあたって、まずQuickTimeの初期化が必要になります。 Movieを扱う為には、下記の2つの関数を使って、QuickTimeを初期化してください。 |c| /! QuickTime Media Layerの初期化を行います。 @param[in] flag 初期化オプション @return 成…

動画データ解析ツールを作成する(1) - 3GPP2のフォーマットの資料を探す

http://www.apple.com/jp/quicktime/player/win.html 動画解析ツールを作ってみたくなったので考えてみました。 最終的には誰にでも簡単に使えるようにGUIでの提供を考えていますが、とりあえずはCUIで動くものを作る予定です。 -対応させるフォーマットは?…