スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

増毛戦士 ズラーマン

吉報まってまぁ~~す!!

----------------

OpenGL GLSL調査

test 1
画面を真っ赤にすることはできるか?

glFragColor_red.png


test 2
位置に応じて色を変えられるか(各pixelは自分の位置がわかるのか)?

gl_FragCoord_red_blue.png

#version 130
uniform int width;
uniform int height;
out vec4 fragColor;

void main(void){
fragColor = vec4(gl_FragCoord.x/width, 0.0, gl_FragCoord.y/height, 0.0);
}

InsightToolKit インストール

喫茶店やファーストフード店に行って、ITKの調査、およびEプロジェクトの作業を進めていた。ITKはビルドとインストールが済んだ。Threshold Filterの動作確認をし、以下のように画像の入力・加工・出力ができた。QtをConfigure時にRemoveしたからQuickViewerという機能が使えなくなってしまった。ITKは.dllを作るわけではないから、QtはRemoveしなくてよかっただろうと後になって気付いた。ITKのビルドには数時間を要した。CMakeでビルド時にTESTするというチェックがあるが、外してGenerateしないとSystem Checkが12時間以上終わらない。

何故か自宅のVista PCがネットに繋がらなくなった。原因不明。ASUSは繋がる。

IMG_1069_trimmed_400.jpg

ITK_ThresholdFilter_160_200_400.png



Interstellar O.S.T. (Hans Zimmer)Interstellar O.S.T. (Hans Zimmer)
(2014/11/20)
Hans Zimmer

OpenCV watershedアルゴリズムによる輪郭線描画

レーゲンスブルクで撮ったアオクビガモの画像にcvWatershed関数を施した。

watershed_contour_Regensburg_duck_800.jpg

Cartoonifier

Tateyama_bigwaves_1200.jpg

Tateyama_bigwaves_1200_cartoon.png


3次元空間中に張られた3点の外接円の中心の求め方:
① 2点選び、2点間の中間となる平面の方程式を求める。
② もう2点選び、2点間の中間となる平面の方程式を求める。
③ 3点を通る平面の方程式を求める。
④ ①、②、③の平面の交点をCramerの公式により求める。
行列式等はEigenによる方が見る側がわかりやすいだろう。

Sketch Filter, Cartoon Filter(OpenCV)

蓬莱橋

horai_bridge_large.jpg

median Blur

horai_bridge_medianBlur.png

Laplacian

horai_bridge_Laplacian_edges.png

Edge

horai_bridge_Laplacian_mask.png



錦帯橋

kintaikyo_2.jpg

median Blur

kintaikyo_2_medianBlur.png

Laplacian

kintaikyo_2_Laplacian_edges.png

Edge

kintaikyo_2_Laplacian_mask.png



Munich church

Munich_church.jpg

median Blur

Munich_church_medianBlur.png

Laplacian

Munich_church_Laplacian_edges.png

Edge

Munich_church_Laplacian_mask.png

画像の離散フーリエ変換、離散コサイン変換

Reaction-Diffusion Equation Gray-Scott model

mu2.jpg

DFT

mu2_DFT_gray.png

DCT

mu2_dct.png


Reaction-Diffusion Equation FitzHugh-Nagumo model

FitzHughNagumoSpiralWave.jpg

DFT

FitzHughNagumoSpiralWave_DFT_gray.png

DCT

FitzHughNagumoSpiralWave_dct.png


Reaction-Diffusion Equation "China" model

Turing_Pattern_China3-03-2.jpg

DFT

Turing_Pattern_China3-03-2_DFT_gray.png

DCT

Turing_Pattern_China3-03-2_dct.png


CvMatクラスの画像の保存:
cvSaveImage("dct.png", dct);

CvMatクラスの各画素値の変更(対数)
for(y=0; yheight; y++){
for(x=0; xwidth; x++){
cvmSet(dct,y,x, 50*log(fabs(cvmGet(dct,y,x)+1)));
}
}

画像処理の初歩(OpenCV使用)

下のアゲハの画像を元に、色相変換、2値変換、エッジ検出を行う。

butterfly.jpg


【色相変換】
一度HSV形式に変換し、Hを変更後、RGB形式に戻して画像を保存する。

img_hsv = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3);
img_h = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
img_s = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
img_v = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
img_dst = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 3);
double val=60.0; // 色相の変換量
cvCvtColor(img, img_hsv, CV_BGR2HSV); // HSVに変更
cvSplit(img_hsv, img_h, img_s, img_v, NULL); // H, S, Vチャネルに分離
for(int j=0; jheight; j++){
for(int i=0; iwidth; i++){
double hue=cvGetReal2D(img_h, j, i);
double newval = hue+val;
newval = (int)newval%180;
cvSetReal2D(img_h, j, i, newval);
}
}
cvMerge(img_h, img_s, img_v, NULL, img_dst); // H, S, Vを結合
cvCvtColor(img_dst, img_dst, CV_HSV2BGR); // HSVをRGBに変換

butterfly.jpg butterfly_HSVplus30.jpg

butterfly_HSVplus60.jpg butterfly_HSVplus90.jpg

butterfly_HSVplus120.jpg butterfly_HSVplus150.jpg


【2値化】
グレースケールに変換の後、閾値を定めて2値化する。

img_gray = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
img_bin = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);

cvCvtColor(img, img_gray, CV_BGR2GRAY); // モノクロ画像へ変換
cvThreshold(img_gray, img_bin, 128, 255, CV_THRESH_BINARY); // 2値化

butterfly.jpg butterfly_bin.jpg


【エッジ検出】
空間微分を利用して局所最大となるpixelを検出しているらしい。Cannyアルゴリズムというものがあるらしく、これを使うと繋がった線として検出してくるらしい。

img_gray = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
img_edge = cvCreateImage(cvGetSize(img), IPL_DEPTH_8U, 1);
cvCvtColor(img, img_gray, CV_BGR2GRAY); // モノクロ画像へ変換
cvCanny(img_gray, img_edge, 80, 120, 3); // エッジ検出

butterfly.jpg butterfly_edge.jpg



Essential OpenCV Programming―With Visual C++ 2008Essential OpenCV Programming―With Visual C++ 2008
(2009/10)
谷尻 豊寿

Xtion セットアップ

Windows VistaのPCにXtionを動かせる環境を作る。が、Kinect2同様、苦戦した。デプスセンサはハードルが意味なく高い。

Xtion付属のCDにSDKが入っているのだが、インストーラを起動するとインストールに失敗し、しかもその後PCが強制的に再起動される。
NITEというソフトが必要のようである。

Xtion公式サイトよりSDKを改めてダウンロードしてきた。
http://www.asus.com/jp/Multimedia/Xtion_PRO_LIVE/HelpDesk_Download/
Xtion_Driver_SDK.zip → SDK → setupダブルクリック

PrimeSenseのLicense Keyを入力せよ、と要求されるが、「フリーキー」なるものがあるらしい。
NITEのインストールが始まる。

http://www.openni.ru/openni-sdk/openni-sdk-history-2/
OpenNI-Compliant Sensor Driver v5.1.6.6 Windows-x32をダウンロードしてインストールした。
→ C:\Program Files\OpenNI\Samples\Bin\Release\NiSimpleViewer.exeが動作するようになった。

Xtion_DepthSensor_03Dec2014.png


PCLのサンプルコードも動作を確認した。

PCL_Xtion動作確認_03Dec2014



先月26日 → ここ3年間で最も嬉しかった日。既に1週間が経過か。
Profile

zoa

Author:zoa
Metropolis (1927)

Calendar
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
Labels
Admin
Previous Posts
Recent Comments
Recent Trackback
Archive
このページのトップへ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。