頭と尻尾はくれてやる!

iOSアプリなどの開発日記です


PSOFTからアプリのプレゼント!

PSOFTからアプリのプレゼントをもらったというお話だよ。

数日前にPSOFTという会社が自社の有料アプリをプレゼントするキャンペーンをやってるというのを見て応募したら、珍しく俺が当選したんだよ。ありがとう、PSOFT!
どれでも好きなアプリを希望できたんだけど、俺が選んだのはSnow Canvasというアプリ。車なんかに降り積もった雪で落書きするようなイメージ。

Snow Canvas

↑スクリーンショット。いろいろと芸が細かかったりするところはさすがだよ。


ところでこのPSOFTってアプリ開発会社。あのARMissileというアプリを作ったところなんだ。
iPhoneのカメラで撮影してる画像にミサイルを撃てるというあのアプリね。

ARMissile

↑これ。金払いの渋い俺には珍しく、この有料アプリは購入してたんだよ。
なぜかっていうと、ARに興味があってどんなものかなと買ってみたわけだけど、、、驚いたよ。
画面をタップした位置の画像を追従していくんだけどこの時、デバイスを持つ手が動くこともあれば、被写体自体が動くこともある。それでもきちんと追従してるんだよ。
単にカメラから得た画像データからタップした位置付近の画像を探し出すのはそう難しくはないけど、それを高速でやる必要があるわけだ。
もしかしたら
iOSでPOCに挑戦(1) 位相限定相関法をやってみる
で書いたような位相限定相関法とか使って探し出してるのかもしれないけどどうなんだろう。結構サイズによっては処理に時間がかかったんだよね。
ARMissileの場合、複数の点を追従するんだから、、、ホントどういうアルゴリズムでやってんの?というのが実感だよ。

そんなわけでネタアプリに高度な技術力をつぎ込むPSOFTにこっそり注目してるんだ。
スポンサーサイト






iOSでPOCに挑戦(1) 位相限定相関法をやってみる

位相限定相関法ってのをiOSでやってみるというお話だよ。

画像処理関連でいろいろと調べてたら位相限定相関法(Phase Only Correlationってことで以下POCね)というのにたどりついたんだ。なんだそりゃって感じだよね。

位相限定相関法(POC) - スズメレンダラー・クマ将棋の開発日記
↑このあたりの記事がわかりやすいんだけど、POCを使えば二つの画像のずれを求めることができるんだよ。さらにもう少し手間暇かける、、、つまり料理の仕上げにオリーブオイルを加えるようなことをするとx、y方向のずれだけじゃなくて角度や大きさの違いも計算できるんだ。もこみちくんもびっくりだね。

百聞は一見に如かずってことで、実際にiOSデバイス(iPhone 4S)で動かしてるところを撮影してみたんだ。

撮影時の位置関係
↑位置関係はこんな感じ。画像が小さいのは部屋がちらかってるからだよ、ごめんね。
ディスプレイに立てかけてるレシピ(何でもよかったんだけど、近くにあったんだ)をiPhone 4S(iOS 6.0.1)で画像処理しているところをiPad(第三世代)で動画撮影しているよ。
その動画がこちら↓



これは最初にボタンをタップした時に画面中央部分を取得する(データ数は128x128、取得後左下に表示)んだけど、その画像を追いかけ続けるというもの。
毎回全画面から探すのは大変なので赤い点を左上とする正方形(データ数は128x128)のデータと最初の画像をPOCにより比較しているんだ。その結果により最初の画像であろうってところにブルーっぽい正方形を表示させているんだ。赤い点は最初の画像との位置の差を小さくするために、都度移動させてるよ。
手ぶれとかがあるとPOCの結果が出ないことがあるんだけど、そんな場合はブルーの正方形のhiddenプロパティをYESにして非表示にしてる。
なお、ブルーの正方形が若干微妙なアニメーションになっているのはCALayerを使っているからで、ここはあまり突っ込まないでね。


ここでは二枚の画像のずれだけじゃなく角度や大きさの変化も取得してるけど、まずは単純なx、y方向のずれを求めてみることをやってみよう。え?あまり興味ない?まあそう言われてもやるけどねっ!






YCbCr方式のデータの並び方がわからない

iPhoneのカメラ画像の輝度データを得る時のお話だよ。

AVCaptureVideoDataOutput に videoSettings ってプロパティがあって今まではkCVPixelBufferPixelFormatTypeKey に kCVPixelFormatType_32BGRA を使っていたんだよ(ごめんね、すごく手抜きな文章で)。
でも今俺がやりたい処理ってカラーじゃなく輝度データだけでもいいんだ。だからRGBの各値から輝度に換算したりしてるんだけど、前々からなんとなく無駄だなあと思っていたんだよね。
ところがふと上の設定で kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange というのがあるのを知ったんだよ。これだと輝度データが直接取れるとかなんとか。これを使えば輝度データを取得するのも高速でいけるんじゃないのって妄想したんだよ。

それでいろいろテストしてみたんだけどさ、実のところよくわからないんだ。データがどう並んでいるのかさっぱりわからない。
kCVPixelFormatType_32BGRA だと一つの点がRGBとアルファ値の各1バイト、計4バイトで表現されていてそれが順に並んでいるのはわかるんだけど、どうもこちらは勝手が違うようで、、、YCbCr方式というのがあるというのも知らなかったんだけど、そんなのをざっと読んだところでは手に負えないと悟ったよ。


斬新!せんべい汁

せんべい汁を食べてみたってお話だよ。

南部(なんぶ)せんべいというお煎餅を鍋の具材として入れる鍋があるんだってね。以前B1グランプリで優勝したとか有名らしいんだけど俺はよく知らなかったんだ。

かやき

↑残りの袋の画像しかないけど、この煎餅を鍋に入れるというもの。ヨメさんは白だしを使っていたな。
公式サイトのせんべい汁のページはここ → 南部せんべいの巖手屋

これがだね、予想外に美味しかったんだ!
煎餅を鍋に入れたらお麩みたいなもんかと思っていたんだけど、少し違う。この食感は、、、まあ食べてのお楽しみということで。
ともかく新しい味だったよ。
なお、煎餅がだし汁を吸うのでだし汁を追加する頻度が高くなるので要注意。



Macからはがきサイズが印刷できない?!

MacからEP-804Aというプリンタではがきを印刷するのにえらく苦労したってお話だよ。

ウチのプリンターは昨年買ったEPSONのEP-804Aというモノなんだ。昨年の年末にはこれを使って年賀状を印刷したんだけど、その時にはXP機を使ったんだ。
今年はMac(Mountain Lion 10.8.2)でやってみようとしたんだけど、どうもうまくいかない。何をやっても印刷用紙のサイズがあわないとなるんだ。
印刷時には「はがき」って指定しているのに、プリンターはA4で印刷しろと言われていると勘違いしているのか白紙のA4を出力して「印刷用紙と、セットされている用紙のサイズが異なります。」って警告が出るんだ(下の画像)。
EP-804Aのエラーメッセージ

ソフトは日本郵便のはがきデザインキットというのを使っているんだけど、他のソフトでもはがきサイズの印刷ができなかったからこのソフト固有のものではなさそう。

EP-804Aのファームウェア更新中

↑ドライバーがまずいのかなってことで再度インストールしたり、ファームウェアも最新のにしてみたりしてもやっぱりだめ。
相性の問題なのかなと諦めて死にかけのXP機からなんとかやるしかないか、と思っていたんだけど、、、ようやく気が付いたよ!

印刷時のウインドウ1
↑これは印刷を進めて行くと出てくる画面なんだけど、この真ん中あたりにある「レイアウト」というのは他にも選べるんだよ、わかりにくいけど。
これを「印刷設定」というのにすると、

印刷時のウインドウ2
↑こうなるんだよ。ここに給紙方法というのがあって、デフォルトが下トレイになっていたんだ。
EP-804Aの下トレイにはA4用紙が入っていて、はがきは上トレイに入れてるんだ。これだよ!
ここを上トレイにすれば意図通りにはがきで印刷できたんだ!
用紙サイズを変更した時点で給紙トレイは自動で選択されると思っていたから、こんな設定があると思わなかったよ。
めでたし、めでたし。





Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.