その後のその後

iOSエンジニア 堤 修一のブログ github.com/shu223

画像処理

3D写真の機能をアプリに組み込める「Fyuse SDK」の使い方

Fyuse SDKを使うと、3D写真(=Fyuse)を撮る/見る機能をアプリに組み込むことができます。 本記事ではそんなSDKの使いどころや組み込み方法について紹介してみたいと思います。 ※念のため、このFyuseおよびFyuse SDKは、僕が所属しているFyusion社のプロダ…

【iOS 11】ARKitについてWWDCのラボで聞いてきたことのメモ

iOS 11から追加された、AR機能を実装するためのフレームワーク「ARKit」についてWWDCのラボ(Appleのデベロッパに直接質問できるコーナー)で聞いたことのメモです。注目のフレームワークなので行列ができてましたが、丁寧に色々と教えてくれたので、忘れな…

Metalのコンピュートシェーダに関する諸々

Metal の compute shader について。随時書いていきます。 [[ thread_position_in_grid ]] って何? こういう感じで、カーネル関数の引数から受け取れるやつ。 kernel void add_vectors(const device float4 *inA [[ buffer(0) ]], const device float4 *inB…

iOS/MetalのシェーダをWebGL/GLSLから移植する

Metalでグラフィック処理を行うにしろ並列演算を行うにしろ、GPUに処理をさせるためのシェーダを書かないといけないわけですが、これがまだ情報が少なくて、「こういうシェーダを書きたいんだけど、誰かもう書いてないかな・・・」というときに参考になる近…

TensorFlowをiOSで動かしてみる

TensorFlow に iOS サポートが追加された というニュースを見かけたので、ビルドして、iOSで動作させてみました。 (たまたま目の前にあった扇風機もバッチリ認識してくれました) 本記事では最終的にうまくいった手順を書いています。この手順をなぞってみ…

GLKView の描画内容を AVAssetWriter を用いて動画としてエクスポートする

すごい雑なメモですが、ちゃんと書くにはまだ理解が足りてなくて、かといってローカルに放置するとまた同じことを一から自分で調べそうな気がするので、とりあえずアップ。 ※古いコードを流用している部分もあるため、一部ObjC、一部Swiftです。 やりたかっ…

ディープラーニングの有名ライブラリ5種を最短距離で試す半日コース(TensorFlow, Chainer, Caffe, DeepDream, 画風変換)

「いつか勉強しよう」と人工知能/機械学習/ディープラーニング(Deep Learning)といったトピックの記事の見つけてはアーカイブしてきたものの、結局2015年は何一つやらずに終わってしまったので、とにかく一歩でも足を踏み出すべく、本質的な理解等はさて…

Core Imageを用いたリッチな画面遷移アニメーション

昨日、クラスメソッドさん主催の勉強会『iOS 9 週連続 Bootcamp!2週目』にて登壇させていただきました。 Core Image Tips & Tricks in iOS 9 from Shuichi Tsutsumi タイトルにある "Tips&Tricks" はWWDCのセッション名でもたびたび使われている用語で、Tri…

【iOS9】Core Image の新機能:文字認識/追加フィルタ47種

先日、Gunosy さん主催の勉強会「WWDC Afterparty Roppongi」にて標題の発表をさせていただきました。 iOS 9 の新機能 Core Image 編 from Shuichi Tsutsumi タイトルの通り、iOS 9 の Core Image の新機能について紹介&デモ *1 しました。 概要 大きく分け…

『OpenCV 3.0 on iOS』 #yidev 第19回勉強会

第19回 yidev(横浜iPhone開発者勉強会)にて、『OpenCV 3.0 on iOS』という発表をさせていただきました。 OpenCV 3.0 on iOS from Shuichi Tsutsumi 概要 OpenCV 3.0 の話、というよりは、最新版の3.0をベースとしつつ、「Core Image や vImage や GPUImage…

OpenCV for iOS で画像の自動補間・修復

写真に意図せず写りこんでしまった物体等を取り除き、それによって欠損した領域を自動修復する技術を、画像修復/画像補間/インペインティング(Inpainting)と呼びます。 で、OpenCV にその機能があったので iOS で実装してみました。 関数 inpaint は,選…

iOS / OpenCV 3.0 で画像の特徴点を検出する(AKAZE, SIFT, SURF, ORB)

局所特徴量とは / SIFT, SURF 特徴量 このスライドが超わかりやすかったです。 画像認識の初歩、SIFT,SURF特徴量 from takaya imai で、SIFT (Scale-invariant feature transform)、SURF (Speed-Upped Robust Feature) というのは、拡大縮小・回転・照明変化…

iOSと機械学習

ビッグデータとかの機械学習隆盛の背景にある文脈や、その拠り所となるコンピュータの処理性能から考えても「モバイルデバイス向けOSと機械学習を紐付けて考えようとする」ことはそもそもあまり筋がよろしくない・・・とは思うのですが、やはり長くiOSだけに…

「FILTERS」で学ぶ GLSL

「GLSL を書いてオレオレフィルターをつくれる」というコンセプトのカメラアプリがリリースされました。 Filters | 面白法人カヤック シェーダを書いて動的に適用する、というアイデア自体は昔からあるものですが、 GLSL Studio : iOS端末上でGLSLが書けるシ…

機械学習はじめの一歩に役立つ記事のまとめ

「機械学習」というワードになんとなく惹かれつつも、具体的にやりたいことがあるわけでもないので、手を動かすことなくただひたすら「いつかやる」ために解説記事やチュートリアル記事を集める日々を過ごしていたのですが、このままじゃイカン!と Machine …

一泊二日のopenFrameworksセミナーに参加してきました

先週末、『デジタルアートセミナー#3 openFrameworksで学ぶ、クリエイティブ・コーディング』という一泊二日のセミナーに参加してきました。(※参加者のTLでは「oFセミナー」という呼称の方が一般的でした) 自分にとっての openFrameworks (以下 oF)は、 …

【oFセミナーメモ5】映像解析

『デジタルアートセミナー#3 openFrameworksで学ぶ、クリエイティブ・コーディング』の最終セッション『映像解析によるインタラクション』のメモです。 openFrameworksとOpenCV(ofxOpenCV、ofxCv)を組みあわせることで、映像を用いたインタラクティブな表…

CIKernelを使ったカスタムフィルタのつくりかた

Core Image の CIFilter でいろいろなフィルタ処理(画像処理/画像加工)ができるのはみなさまよくご存知かと思いますが、iOS 8 では CIKernel というクラスが追加され、そのフィルタ(CIFilter)を自作できるようになりました。 本記事は、その作成手順に…

Core Image の遷移エフェクトを使う

Core Image のフィルタ (CIFilter) には、CICategoryTransition というカテゴリーがあり、次のような遷移(トランジション)エフェクトが用意されています。 (2015.10.5更新) CIBarsSwipeTransition CICopyMachineTransition CIDisintegrateWithMaskTransi…

『フラグメントシェーダー事始め』で勉強したメモ

OpenCVで実装した画像処理アルゴリズムを、OpenGL ESのフラグメントシェーダに移植しようとしていて、GPUImageに入っているフィルタのシェーダプログラムを参考として読み始めたものの、そもそもこのシェーダというものがよくわかってないので、下記の記事を…

Core Image の全エフェクトを試せるサンプルコードを公開しました

Core Image のフィルタ(画像にエフェクトをかけたり、色を調整したりするもの)を一通り試せるサンプルプロジェクトをgithubに上げました。 というか、これ、1年以上前にアップしてこちらの記事に書いたのですが、ほとんど認知されることがなかったので、改…

シャッター音の鳴らないカメラアプリの実装方法

「カメラ機能をアプリにつけたいけどシャッター音を鳴らしたくない」とか、「カメラ起動時のアニメーションが嫌だ」とか、カメラ機能をもっと自由にカスタマイズしたい場合は、UIImagePickerController を使うのではなく AVFoundation フレームワークを使う…

たったの6ステップ!『漫画カメラ』風に写真を加工するiPhoneアプリの作り方

超大ヒットした『漫画カメラ』、ほんとに漫画っぽくなって、動作も軽快、シェアも簡単で楽しいですよね。 ただ、ちらほらと「同じこと考えてた」「そういうの作ってた」という声を聞くことがあります。実際に同様のコンセプトのアプリもたくさん出ています。…

【その2】UIImagePickerController を使わないカメラアプリの実装方法

前回記事の続きです。 前回は、プレビュー表示するところまで書きました。今回は、シャッター撮影して画像をカメラロールに保存するところまで。 出力の準備 プロパティ宣言 @property (nonatomic, strong) AVCaptureStillImageOutput *imageOutput; 出力の…

【その1】UIImagePickerController を使わないカメラアプリの実装方法

「カメラ機能をアプリにつけたいけどシャッター音を鳴らしたくない」とか、「カメラ起動時のアニメーションが嫌だ」とかの場合は、UIImagePickerController を使うのではなく AVFoundation フレームワークを使ってカメラ機能を自作する必要があります。 とい…

vImageで領域分割/セグメント化/輪郭抽出/ラベリング

人間から見て"納得感"のある画像処理をしようと思うと、領域分割(セグメント化)をしたくなる場合が多々あります。 たとえば、人物と背景とを別々に処理したい、とか、人の肌の部分だけに処理をしたい、とか。 OpenCVではそういった「領域分割」を行ってく…

『第3回 iphone_dev_jp 東京iPhone/Mac勉強会』で vImage について発表してきました

先日の記事で第2回勉強会向けに用意していた発表内容について書きましたが、本日(7/21)開催された第3回で発表の機会をいただいたので、資料とサンプルコードをアップデートして発表してきました。 iOS 5 から Accelerate.framework に追加された高速画像…

『第2回 iphone_dev_jp 東京iPhone/Mac勉強会』で vImage について発表・・するつもりで参加してきました

めんどくさいタイトルですいません。。 僕がこの勉強会のATNDに気づいたころには120人の参加者枠もとっくにうまり、発表者枠も既に10人に達していたのですが、「時間がもし余ったら」と @k_katsumi さんの粋な計らいでLT補欠として参加させていただいた、と…

BMPファイルのカラーパレットを書き換える

ゲームのキャラ画像など、一つの画像に対して配色パターンがたくさんある場合、画像ファイルは1つだけ持っておいて、カラーパレットを動的に書き換えるという方式をとるようです。 これだと容量を節約できるし、全ピクセルに対して色変換する場合と違ってパ…

OpenCV 顔認識でビルド時に Null pointer (NULL filename) in cvOpenFileStorage エラーがでる場合の対処法

過去のメモからの掘り起こしシリーズ。 『恋愛偏差値』という、ロンブー田村淳さんと、早稲田大学森川教授とのコラボアプリ開発中のメモより。 OpenCV Error: Null pointer (NULL filename) in cvOpenFileStorage, file ../../src/cxcore/cxpersistence.cpp,…