あの言語で画像処理する ライブラリを作った件
-
Upload
sakiyama-kei -
Category
Software
-
view
642 -
download
1
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
のコードです
OpenCVjs https://github.com/sakiyamaK/OpenCVjs
テストプログラム https://github.com/sakiyamaK/Test_OpenCVjs
・チャンネル合成、分解・図形の描画(円、四角、直線 )・表色系変換(RGB, HSV, HLS, YCbCr, GRAY)・リサイズ(バイキュービック法とか )・スムージング (ブラー、ガウシアン、メディアン、バイラテラル )・2値化(大津の閾値法とか)・モルフォロジー変換 (オープニング、クロージングとか )・画像のブレンド (オーバーレイ、ハードライトなど 13種)・ハフ変換・ヒストグラム均一化・エッジ検出(ソーベル、キャニー )・ラベリング・トーンカーブ・行列演算(四則演算、 (擬似)逆行列、固有値、固有ベクトル)・機械学習(SVM)
できること(一部紹介)
スライドでも一例を (エッジ検出)
//縦横ソーベルフィルタ
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部分(一部省略)