OpenCVで、画像の特定領域のHSV(HSB)を増やしたり減らしたりするツール「colortrans」を作った。
コマンドラインからファイル名を渡すと実行できるタイプ。
こんなコマンドでお手軽一発生成できます
colortrans ../data/shokai.jpg result.jpg -30 50 -10 ../data/shokai-mask.bmp
できた画像

■ダウンロード
mercurialリポジトリをbitbucketに置いた。
shokai / twitter face color change / overview — bitbucket.org
Ubuntu8.04でビルドしたバイナリもコミットしておいた。OpenCVなので他環境でも同じコードをコンパイルしなおせば実行できるはず。
twitterでriywoさんがアイコンに自分の最近の発言ワードを出しているのを見て、じゃあ自分の顔色を使って何か表現できないかという事で作り始めた。なのでリポジトリ名が twitter face color change になっている
でもまだ何と色を連動させればいいのか決めかねているので、アップローダはまだ書いてない。たぶんtwitterと関係のないリアルワールドの情報の方が面白い。俺の脈拍とかクリエイティブビートとか・・・
■顔だけ色を変える方法
画像認識ではできそうにないので、手動でマスクを作る
イラレでもPhotoshopでもいい。

元画像と同じサイズで、顔部分だけ黒で描く画像間違えた。顔を白で、顔以外を黒で描くだった

モノクロ2階調のBMP形式で保存する

ファイル名はなんでもいい。
できたマスクBMP画像と、今回使うjpeg元画像
■変換する
colortransというUbuntuでビルドしたバイナリがコミットしてあるので、
入力ファイル名 出力ファイル名 Hue Saturation Value マスクファイル名
の順に引数を渡すとできる。
colortrans shokai.jpg result.jpg -30 50 -10 mask.bmp
マスクを指定しないと、画像全体の色を遷移させる事も出来る
colortrans shokai.jpg result.jpg 40 0 0

これはこれで何かに使えるかもしれない
■プログラム
MacやWindowsでも、OpenCVをはじめたで書いたとおりビルド環境を作れば使える。
OpenCVは簡単なので、各言語バインディング使うより普通にCで書いた方がいいと思う
colortrans.cpp
#include <stdio.h>
#include <highgui.h>
#include <cv.h>
IplImage *img = NULL;
IplImage *imgMask = NULL;
IplImage *imgHsv, *imgResult, *imgHue, *imgSat, *imgVal;
int main(int argc, char** argv){
if(argc < 6){
puts("Put filenames and HSV(HSB) as ARGS");
puts(" colorchange input output H(int) S(int) V(int) (mask)");
puts("Usage:");
puts(" colortrans ../data/shokai.jpg result.jpg -30 50 -10 ../data/shokai-mask.jpg");
puts(" colortrans ../data/shokai.jpg result.jpg 40 0 0");
return -1;
}
img = cvLoadImage(argv[1], CV_LOAD_IMAGE_COLOR);
if(argc > 6) imgMask = cvLoadImage(argv[6], CV_LOAD_IMAGE_GRAYSCALE);
imgHsv = cvCreateImage(cvSize(img->width, img->height), IPL_DEPTH_8U, 3);
imgResult = cvCreateImage(cvSize(img->width,img->height), IPL_DEPTH_8U, 3);
imgHue = cvCreateImage(cvSize(img->width,img->height), IPL_DEPTH_8U, 1);
imgSat = cvCreateImage(cvSize(img->width,img->height), IPL_DEPTH_8U, 1);
imgVal = cvCreateImage(cvSize(img->width,img->height), IPL_DEPTH_8U, 1);
cvCvtColor(img, imgHsv, CV_BGR2HSV);
cvSplit(imgHsv, imgHue, imgSat, imgVal, NULL);
cvAddS(imgHue, cvScalarAll(atoi(argv[3])), imgHue, imgMask);
cvAddS(imgSat, cvScalarAll(atoi(argv[4])), imgSat, imgMask);
cvAddS(imgVal, cvScalarAll(atoi(argv[5])), imgVal, imgMask);
cvMerge(imgHue, imgSat, imgVal, NULL, imgHsv);
cvCvtColor(imgHsv, imgResult, CV_HSV2BGR);
cvSaveImage(argv[2], imgResult);
}
数日前に日本語版が出た
http://books.google.co.jp/
これまで作った物の名前で検索してみたら、それぞれ知らない書籍で言及されてた
ついでに右側にAmazonや出版社直販のリンクも出てくるのが小憎い。Google翻訳と連動したらいいなあ
スペイン語圏?の学会誌みたい
Pileus
Prolifération Des écrans / Proliferation of Screens
Teleshadow
The Social Dynamics of Information and Communication Technology
8000円する本だからちょっと買えないな・・・
と思ったけどabst見ると面白そうだから買おうかな
今週の金曜日に去年もあったシンポジウムがまたあります。
今回はPhysical ComputingやMaking Things TalkのTom Igoe先生と、Gainerの小林茂先生の講演があります。
xtel: Ubiquitous Content Project: 「ユビキタスコンテンツシンポジウム 2009」開催
2009年2月27日・28日、「ユビキタスコンテンツ製作支援システムの研究」は、東京・代官山ヒルサイドバンケット・ヒルサイドプラザにて、「ユビキタスコンテンツシンポジウム2009 – And then there are three. -」を開催致します。
ユビキタスコンテンツとは、私たちの衣食住遊に新たな経験と感動をもたらすコンテンツです。それらは物や環境に溶け込み、人や状況によってダイミックに変化し、ネットワークを作成し、経験の蓄積や連動を可能とする必要があります。しかしながら、この近未来のコンテンツを製作するためには、従来のデザインツールやデザインセオリーでは不十分でした。そこで私たちは、この問題を解決するためのツールとしてユビキタスコンテンツプラットフォーム「xtel」を開発してきたのです。
今年度のシンポジウムは「And then there are three.」をテーマに据え、「Making Things Talk」著者のTom Igoe氏、「Gainer」開発者の小林茂氏をゲストスピーカとしてお招きし、「未知なるもの」をデザインする「ツールのデザイン」についてディスカッションを行います。また作品展では、われわれの新たなデザインセオリーを踏まえ、「xtel」によって構築したユビキタスコンテンツを皆様に体験していただきます。
皆様のご来場を心よりお待ち申し上げております。
日時&場所:
・シンポジウム(作品展 内覧会あり)
2009年2月27日(金) 13:00~19:00 (開場 12:30)
代官山ヒルサイドバンケット
・作品展
2009年2月28日(土) 10:00~19:00
代官山ヒルサイドテラス
http://www.hillsideterrace.com/access/index.html
参加費用:
無料
お席に限りがございますので、
シンポジウムにご来場される方は事前登録にご協力ください
事前登録方法:
シンポジウムへのご来場をお考えの方は、
・お名前
・所属
・電話番号
・メールアドレス
を添えて、xtra [at] imgl.sfc.keio.ac.jpまでメールをお送りください。
シンポジウム プログラム
第1部:デザイン思考とプロトタイピングツール
13:00 – 13:20 開会挨拶と進捗報告 (稲蔭正彦)
13:20 – 13:50 講演1 (Tom Igoe氏)
「フィジカルコンピューティングにおけるプロトタイピング」
13:50 – 14:30 講演2 (奥出直人)
「デザイン思考とプロトタイピング」
14:20 – 15:00 討論および質疑応答
・すべてのプレゼンテーション資料は英語になります.
・講演1および討論は英語にて行います.
休憩
第2部:コンテンツデザインのためのツール
15:20 – 15:40 展示作品紹介
15:40 – 16:00 講演3 (石澤太祥・植木淳朗)
「xtel」
16:00 – 16:30 講演4 (小林茂氏)
「Gainer/Funnel」
16:30 – 17:10 討論および質疑応答
・すべてのプレゼンテーション資料は英語になります.
・討論は英語にて行います.
休憩
第3部:内覧会
17:30 – 19:00 ヒルサイド プラザにて内覧会
Google SketchUpの無料版を使ってみている。
3DモデリングなんてStrata 3Dの時以来で、全然詳しくないんだけどSketch Upがわかりやすすぎてびっくりした。
有料版だとAutoCADやdxfなどの形式でデータを書き出せるようになるが、無料版ではsketchup独自形式でしか保存できない。
でも今回は手で工作するつもりなので無料版でいいや。部品の位置合わせに使う。
ここまでインストールして10時間?ぐらい

部品は実寸で作っておいて、配置をキメるためにコンポーネント登録して動かしている。基盤の配線があるので悩む。
寸法や注釈とか入れれるのが見た目的に良い

無駄にファンもモデリングしてみた。なんの意味もない。

まず、他のモデリングソフトと比べてもコントロールパネルの類が少なくて、何をしていいのかわからなかったのであきらめそうになり、ライノセラスに浮気したりもしたけど、ビデオチュートリアルを初級編の最初の数個と、椅子の作り方、move/follow me/circleツールあたりを見たら大体感覚がわかった。
とくにこの椅子の作り方 (Google SketchUp New Users 4: Create a Chair) が大変良い。とんでもない速度で椅子が作られてびっくりした
