2015年10月10日土曜日

画像を減色するその1

画像を減色します。
まぁグラフィックソフトでは必ずといっていいほどある機能ですが、
早い話、準備されたいくつかの近い色に合わせる作業となります。
0~255までが取りうる範囲の場合、ステップを刻んだりすることでも、
色の数は少なくできます。


問題はどこかということなのですが、、
『近い色とは何か』
ということなのですよ。
また、
『準備されたいくつかの色』
をどうやって策定するかということなのです。

そもそもこれで何をやりたいかというと、

こういう画像を、、、


こういう画像にしたいのです。


ちょっとイラストっぽくなってイイ感じです(o^^o)

で、考えてみました。
元々が24BIT-RGB画像なので、
Rが0-255
Gが0-255
Bが0-255
これを、Rを、0/32/64/96/128/160/192/224/255のどれか近い値にしてしまえば、
少なくとも、9*9*9=729色には減色できます。
まだまだ多いな。。。
0/64/128/192/257のどれか近い値にしてしまえば、
5*5*5=125色に減色できます。

ってことでやってみると、、、、


明らかに、
思ってたんとちゃう!(>_<)※西田さん@笑い飯 的に。

となってしまいました。
ちなみに、、
R=((int)R/5)*5;
的な感じでやってるわけです。
※もちろん0周辺255周辺はアジャストさせたりしますが。

さぁこれはなぜ起きたかというと、
RGBの諧調と目で感じる諧調は違う!
ということです。

そう、色と言えばRGBしかしらない貴方、それではこれ以上進めないのです!
ということで、とても参考になるものがあります。
これです!※会社で見るときはやや注意。

これには、『アニメキャラにおける肌色の検出方法』という内容が含まれています。

ということで、次回は、
HSVとHSLについてです(o^^o)









2015年9月4日金曜日

電子タバコを半年ちょい使ってみた

電子タバコを半年ちょい使ってみました。
おかげで禁煙はできてます。
ただし、ニコチン依存症は継続中です。

さて、この電子タバコ、いい評判も悪い評判も多いですが、実際に半年ちょい使った経験を綴ってみます。

1.『モノ』としての完成度はまだまだ

→こなれた工業製品というのは、改良を重ね、ある種の完成の域に近づいていきます。この点、まだまだです。
例えば『液モレ』と言われる現象。
製品が正規品であろうと無かろうと、液モレする原因にもよりますが(安物特有のモレもあるものの)、液モレしない製品は出会ったことが無いです。
これは構造的な問題で、正規品であっても解決出来ていない問題です。

2.コストはどうなのだ?
→これは簡単です。
香りを追求すると、タバコとたいして変わりません。
電子タバコ本体の完成度とは逆に、リキッドの完成度は高いのです。
まあ、値段も高いのですが(>_<)。

香りを追求せず、禁煙までのステップと考えたり、香りよりニコチンの摂取をメインとするなら、自分で調合すれば安いです。とても安いです。私は、これです。リキッドだけで考えれば、販売されてるリキッドの数十分の1で済みます。

3.安く押さえるには?
→手入れの範疇かどうかはわかりませんが、安くしたいならばDIY要素は高くなります。

つづく

2015年6月24日水曜日

ハフ変換(3)-ソースコードを見てみると。。。

それではググって、サンプルのソ-スでも見てみましょう。
とりあえず、ここあたりがソースとしてはわかりやすいです。
以下、抜粋です。
※<が漢字になってます。注意。
   //直線の場合 -------------------------------------------------
      int theta,rho;
      //直線検出用頻度カウンタ
      short[][] counter=new short[THETA_MAX][2*RHO_MAX];

      for(y=0;y<YMAX;y++)
         for(x=0;x<XMAX;x++)
            if(data[y][x]==1){
               for(theta=0;theta<THETA_MAX;theta++){
                  rho=(int)(x*cs[theta]+y*sn[theta]+0.5);
                  counter[theta][rho+RHO_MAX]++;
               }
            }

まぁ、中カッコ{}の有無が気に入りませんが、
まず、XとYの2重LOOPを回しています。
これは、『画像の全ての点』を対象にしているという意味ですね。

そして、その場所に該当データがあるかどうか、実際には点があるかどうかを判定し、
 点があった場合には、1024回のLOOPを回しています。
※THETA_MAXが1024 cs,snはsin,cosを再計算させるのを防止するため(CPU負荷がかかるから)、あらかじめテーブルにいれてあります。

同じ直線上の点であれば、 counter[角度][距離]が同じなので、
++でインクリメントしていきます。 まぁここまでは、だれが書いても似たようなコードになるでしょうかあr、特に問題はありませんですね。(o^^o) 

考えるとすれば、THETA_MAXが1024となっていますが、
この適切な値はどうやって決めるかという問題になりますね。

これには、ターゲットとする画像によって違うわけです。
ここでは、800*1200くらいに考えてみると、、、
ヨコ線が左右の端部で1ピクセル上下にズレた直線と仮定すると、
atan(1/800)→0.072度
180/0.072→2500分割くらい必要になります。

よって、上記のサンプルのTHETA_MAXはdefineされていますが、
本来はここは動的にするべきものとなりますね。 

さて、上記のrhoは、原点と直線の距離になるわけですが、
どのような値をとりえるかというと、実はマイナス値もとることがわけです。
はやい話、、こういう場合です。
 
では実際に、どのような値になるかを、
プログラムで確認してみましょう。

 つづく

2015年6月22日月曜日

ハフ変換(2)-そもそもハフ変換とは何か

よっぽど完成されたライブラリを使う以外は、 自分で理解できないソースコードは書くべきでないことは言うまでもありませんが、 そもそもハフ変換による直線の抽出はどうゆう理屈かという話の第一ステップを考えてみます。(o^^o)

では、点が4つあったと考えましょう。
これです。

さて点を1点以上通る直線は、無限です。
早い話、点Aを通る直線は、点Aを中心に0~180度
の分だけ、無限に引けるわけです。

点を2点以上通る直線が何本ひけるかというと、
4本です。


  
ここでどういう考え方をするかというと、
【点Aは直線1を通る点である】ということです。

また同様に、
【点Dは直線1を通る点である】ということです。

そうすると逆に、
【直線1を通る点は、A,Dの2点ある】ということです。

また、



【直線5を通る点は、Aの1点ある】ということです。
まぁAを通る直線は無限にあるわけですが、例として書きました。

これらを集計して、
【2点以上通る線のみ有効なものとする】
と判定できれば、直線1~4の4つが集計できるという、こういうわけです。

しかしながら、そもそも【直線1】をどう定義して、
【どのように判定したら点Aを通るとわかるのか?】という話が、本題となります。

ここで、以下の図のような考え方をするわけです。
 
●直線1とは、
・水平とのなす角度が『角度1』
・原点Oとの距離が『L1』
と定義できるのですね。

そうすると、例えば、、100ピクセル×100ピクセルの画像を考えると、
●角度は0~180度まで考えられる
●直線と原点との距離は、最大でも141ピクセルである
ということがわかります。
そうすると、とたえ1度刻みにしたとしても、
141×180=25,380コのデータが必要になります。
0.1度刻みにすれば、253,800コのデータが必要になります。
ようするに、、
data[141][180]
のデータを持って、それぞれいくつの点を通るかを判定するという、
ものすっごくベタなことをする、
それをするのがハフ変換なのです。

つづく




2015年6月20日土曜日

ハフ変換(1)-画像の角度を判定する

久々にまともな技術系な話です。
題名はハフ変換ですが、要するにこういうことです。
スキャナでスキャンした画像とかありますよね。
それを角度がついてるときに、戻したいって話です。
つまりこういうことです。
(1)スキャンした画像

(2)なんとなく角度を算定するために直線部分を検出する

(3)検出した角度から、正しい角度を予測して回転させる

まぁこんなことやりたいわけです。

まぁ、【ハフ変換】とかぐぐれば、なんとなくヒントがみつかるわけですが、
そして、サンプルのソースとかのってたりするわけですが、
はたまたOpenCVあたりのサンプルでも似たようなものがあったりするわけですが、
やってみればわかります。
そんな簡単にはいかないと。
では、どうしましょう。
まぁ元々技術的に無理がある話でもないので、ひとつずつ解決していきましょう。

ってことで、つづく(o^^o)


2015年3月19日木曜日

齊藤 夢愛 嬢の、傘を取られたけどテリマヨは譲れない件。

FaceBookでちょっと話題になってたので(o^^o)
これも、文言を変えれるようにしてみました。
10秒くらいでできるので、お試しあれ!!(o^^o)
※PC用ではないです。ゴメンナサイです。

●●→ http://w2p.soul-tech.jp/japan/20150320.php

元の記事
http://ameblo.jp/yuatan-saito/entry-11977537040.html






2015年3月16日月曜日

LINEで絵付のメッセージを送ってみる。

LINEで絵の入ったメッセージをLINEで送ってみます。
まぁ、メッセージも画像と一緒に画像化します。
※わかりにくい表現ですみません^^;^^;
とりあえずWEBアプリですが、スマフォ用&Android用です。
iPhoneはWEBアプリからLINEへの連携がとれないので、
画像をDOWNLOADしてもらうしかないです(o^^o)
http://w2p.soul-tech.jp/japan/20150316.php

とりあえず『実行』を押せば何をやってるかわかります(o^^o)

今回のサンプル。




以下、キャプで。
●Android画面(o^^o)

 ↓

 ↓

 ↓

 ↓

 ↓

 ↓

 ↓


こんな感じですね。

2015年2月21日土曜日

WordPressのプラグインをつくらなきゃいけない件

なかなか新しいことを覚えるのもしんどい今日この頃ですけどね。
WordPressを勉強しなきゃならない状況になりました。
勉強って、まぁ、自分で自在にプラグインを作れるレベルを指します。
う~ん、これ系、XOOPS以来ですね。
XOOPS、見事に消えちゃいました。
まあ、社内システムでわずかにささやかに動いてますけどね。
とは言え、WordPressも、好きなPHPですからね。しかしコーディング規約を見て、早くもめげそうです。