あの言語で画像処理する ライブラリを作った件

13
あの言語で画像処理する ライブラリを作った件

Transcript of あの言語で画像処理する ライブラリを作った件

あの言語で画像処理するライブラリを作った件

・崎山 圭 (@sakiyamaK)・専門は画像に埋め込む電子透かし(でした)・Vell(自撮りSNSアプリ)の画像処理周りやってます

自己紹介

Vellアプリ https://itunes.apple.com/app/id996356317株式会社ベル http://vell.jp/

美肌処理

小顔処理

フィルタ処理

※今回は仕事の内容と全然関係ないです

突然ですがこれは何言語のコードでしょう?

//画像にソフトフォーカスをあてる

function SoftFocus(imgId, img){//画像のコピー

var newImg = cvCloneImage(img);var bgImg = cvCloneImage(img);//ガウシアンフィルタでスムージング

cvSmooth(bgImg, bgImg, CV_SMOOTH_TYPE.GAUSSIAN, 7);//原画像とブレンド

cvBlendImage(bgImg, img, newImg, CV_BLEND_MODE.SCREEN);//処理結果を表示

cvShowImage(imgId, newImg);}

突然ですがこれは何言語のコードでしょう?

//画像にソフトフォーカスをあてる

function SoftFocus(imgId, img){//画像のコピー

var newImg = cvCloneImage(img);var bgImg = cvCloneImage(img);//ガウシアンフィルタでスムージング

cvSmooth(bgImg, bgImg, CV_SMOOTH_TYPE.GAUSSIAN, 7);//原画像とブレンド

cvBlendImage(bgImg, img, newImg, CV_BLEND_MODE.SCREEN);//処理結果を表示

cvShowImage(imgId, newImg);}

懐かしのOpenCV1.0系?

C++の型推論てautoじゃなかったけっけ?

突然ですがこれは何言語のコードでしょう?

//画像にソフトフォーカスをあてる

function SoftFocus(imgId, img){//画像のコピー

var newImg = cvCloneImage(img);var bgImg = cvCloneImage(img);//ガウシアンフィルタでスムージング

cvSmooth(bgImg, bgImg, CV_SMOOTH_TYPE.GAUSSIAN, 7);//原画像とブレンド

cvBlendImage(bgImg, img, newImg, CV_BLEND_MODE.SCREEN);//処理結果を表示

cvShowImage(imgId, newImg);}

懐かしのOpenCV1.0系?

C++の型推論てautoじゃなかったけっけ?

これ

JavaScript

のコードです

あの言語で画像処理するライブラリを作った件

改めまして ....

あの言語で画像処理するライブラリを作った件

OpenCVをJavascriptで

フルスクラッチして移植してみた件

OpenCVjs https://github.com/sakiyamaK/OpenCVjs

テストプログラム https://github.com/sakiyamaK/Test_OpenCVjs

・チャンネル合成、分解・図形の描画(円、四角、直線 )・表色系変換(RGB, HSV, HLS, YCbCr, GRAY)・リサイズ(バイキュービック法とか )・スムージング (ブラー、ガウシアン、メディアン、バイラテラル )・2値化(大津の閾値法とか)・モルフォロジー変換 (オープニング、クロージングとか )・画像のブレンド (オーバーレイ、ハードライトなど 13種)・ハフ変換・ヒストグラム均一化・エッジ検出(ソーベル、キャニー )・ラベリング・トーンカーブ・行列演算(四則演算、 (擬似)逆行列、固有値、固有ベクトル)・機械学習(SVM)

できること(一部紹介)

DEMO(会場で実演します )

スライドでも一例を (エッジ検出)

//縦横ソーベルフィルタ

function Sobel(imgId, img){//白黒濃淡画像

var grayImg = cvCreateImage(img.width, img.height);cvCvtColor(img, grayImg, CV_CODE.RGB2GRAY);//X方向ソーベルフィルタ

var sobelXImg = cvCreateImage(img.width,img.height);cvSobel(grayImg, sobelXImg, 1, 0);//Y方向ソーベルフィルタ

var sobelYImg = cvCreateImage(img.width, img.height);cvSobel(grayImg, sobelYImg, 0, 1);//X方向とY方向の合成

cvAdd(sobelXImage, sobelYImage, sobelXImg);//負の値があるので絶対値

cvConvertScaleAbs(sobelXImage, sobelXImg);//表示

cvShowImage(imgId, sobelXImg);}

js部分

<body><!-- 画像の読み込み --><input type="file" id="file1" onClick="cvLoadImagePre(event, 'file1')" onchange= "cvLoadImage(event, 'dispImage', iplImage, 800)">

<!-- ソーベルフィルタ --><input type="button" value="sobel" onClick="Sobel('dispImage', iplImage)"><br/><!-- 処理結果を出力する imgタグ --><img id="dispImage" src="">

</body>

html部分(一部省略)

スライドでも一例を (エッジ検出)

もう一例 (サポートベクターマシン )コードは長いから省略

赤と青の座標を学習して他の座標の色を推測します

まあ非線形にちゃんと学習できてるかなあと

これで、C/C++イヤだーなうぇぶの人たちも画像処理できるよ

ただ、今のところドキュメントらしいドキュメントがない ...

ありがとうございましたっっ!!