<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <title>机上の空論</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/" />
    <link rel="self" type="application/atom+xml" href="http://blog.moro-tyo.net/atom.xml" />
    <id>tag:blog.moro-tyo.net,2008-04-06://1</id>
    <updated>2011-11-26T18:45:34Z</updated>
    
    <generator uri="http://www.sixapart.com/movabletype/">Movable Type 4.1</generator>

<entry>
    <title>blogのurlを変更します</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2011/11/blogurl.html" />
    <id>tag:blog.moro-tyo.net,2011://1.27</id>

    <published>2011-11-26T18:42:46Z</published>
    <updated>2011-11-26T18:45:34Z</updated>

    <summary>blogのurlを http://blog.morotyo.net/ に変更しま...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[blogのurlを<br />
<a href="http://blog.morotyo.net/">http://blog.morotyo.net/</a><br />
に変更します。<br /><br />

ご迷惑をお掛けしますが、よろしくお願いします。]]>
        
    </content>
</entry>

<entry>
    <title>chinkolizeとその新機能の紹介 発表用資料</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2010/09/chinkolize-1.html" />
    <id>tag:blog.moro-tyo.net,2010://1.26</id>

    <published>2010-09-19T13:03:35Z</published>
    <updated>2010-09-19T14:01:53Z</updated>

    <summary>「chinkolizeとその新機能の紹介」について、以前、エクストリーム送別会(...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="cs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[<p>「chinkolizeとその新機能の紹介」について、以前、エクストリーム送別会(#sobe2)で発表した時の資料を公開してなかったので、今さらですが、公開いたします。<br />
</p>]]>
        <![CDATA[<p><br />
<div style="width:425px" id="__ss_5233183"><strong style="display:block;margin:12px 0 4px"><a href="http://www.slideshare.net/morotyo/20100919-chinkolize" title="2010.09.19 chinkolize">2010.09.19 chinkolize</a></strong><object id="__sse5233183" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2010-09-19chinkolize-100919085433-phpapp01&stripped_title=20100919-chinkolize&userName=morotyo" /><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed name="__sse5233183" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=2010-09-19chinkolize-100919085433-phpapp01&stripped_title=20100919-chinkolize&userName=morotyo" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="padding:5px 0 12px">View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/morotyo">morotyo</a>.</div></div></p>

<p>なんだか、本当に申し訳ございません。<br />
</p>]]>
    </content>
</entry>

<entry>
    <title>chinkolize ～画像よ、chinko色に染まれ。～</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2010/02/chinkolize.html" />
    <id>tag:blog.moro-tyo.net,2010://1.25</id>

    <published>2010-02-20T00:23:00Z</published>
    <updated>2010-02-20T00:47:30Z</updated>

    <summary> 突然ですが、この画像は僕のchinkoの平均画素値の画像です。 デジカメで僕の...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="cs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[<p><img alt="mean_my_chinko.png" src="http://blog.moro-tyo.net/2010/02/20/mean_my_chinko.png" class="mt-image-none" style="" height="200" width="200" /><br />
突然ですが、この画像は僕のchinkoの平均画素値の画像です。<br />
デジカメで僕のchinkoの写真を撮って、平均画素値を計算して、作成しました。<br />
(1x1ピクセルの僕のchinkoの写真(を拡大した画像)ともいえます。)<br />
画素値は(R,G,B)=(139,78,63)です。<br />
他の表色系だと、(H,S,V)=(12,139,139)、(L,a,b)=(168,143,142)、(Y,Cr,Cb)=(95,159,110)です(H以外は8bit表記)。<br />
よかったら覚えておいてください。</p>

<p>今回、僕のchinkoの平均画素値から(輝度以外の)色成分を抽出し、入力画像の色成分に上書きするプログラムを作りました。<br />
具体的な処理としては、入力画像のRGB値をYCrCb値に変換し、Y(輝度)以外の成分であるCrとCbの値を、僕のchinkoの値に入れ替る処理を行いました。<br />
つまり、出力される画像の画素は、すべて僕のchinkoの色になります。僕のchinkoへの照明の明暗の違いで作り出せる色のみで構成される画像です。<br />
(もちろん、計算値ですが。)</p>

<p>以下、入力画像と出力画像になります。</p>]]>
        <![CDATA[<p><br />
<img alt="lena.png" src="http://blog.moro-tyo.net/2010/02/20/lena.png" width="384" height="384" class="mt-image-none" style="" /><br />
↓<br />
<img alt="c_lena.png" src="http://blog.moro-tyo.net/2010/02/20/c_lena.png" width="384" height="384" class="mt-image-none" style="" /><br />
lena画像が僕のchinko色になりました。<br />
なんだか、複雑な気分です。</p>

<p><br />
<img alt="mayura.png" src="http://blog.moro-tyo.net/2010/02/20/mayura.png" width="303" height="416" class="mt-image-none" style="" /><br />
↓<br />
<img alt="c_mayura.png" src="http://blog.moro-tyo.net/2010/02/20/c_mayura.png" width="303" height="416" class="mt-image-none" style="" /><br />
ああああああ！僕の大好きな女優の星月まゆらさんが、僕のchinko色にいいいいいい！！！<br />
おちんちんが、むずむずするよぉぉぉ！</p>

<p><br />
<img alt="nozomi.png" src="http://blog.moro-tyo.net/2010/02/20/nozomi.png" width="114" height="170" class="mt-image-none" style="" /><br />
↓<br />
<img alt="c_nozomi.png" src="http://blog.moro-tyo.net/2010/02/20/c_nozomi.png" width="114" height="170" class="mt-image-none" style="" /><br />
大橋のぞみちゃんが、僕のchinko色に！<br />
これは、完全に児童ポルノだああああああ！！！</p>

<p><br />
<img alt="whitehouse.png" src="http://blog.moro-tyo.net/2010/02/20/whitehouse.png" width="387" height="291" class="mt-image-none" style="" /><br />
↓<br />
<img alt="c_whitehouse.png" src="http://blog.moro-tyo.net/2010/02/20/c_whitehouse.png" width="387" height="291" class="mt-image-none" style="" /><br />
あああ、ホワイトハウスが、おちんちんハウスにいいい！<br />
世界最強の軍事力も、僕のおちんちんにひれ伏すんだあああああ！！！</p>

<p><br />
<img alt="c_earth_end.png" src="http://blog.moro-tyo.net/2010/02/20/c_earth_end.png" width="375" height="376" class="mt-image-none" style="" /><br />
完。<br />
</p>]]>
    </content>
</entry>

<entry>
    <title>UnkoNose Web版</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2008/06/unkonose-web.html" />
    <id>tag:blog.moro-tyo.net,2008://1.24</id>

    <published>2008-06-09T12:57:17Z</published>
    <updated>2008-07-05T13:36:53Z</updated>

    <summary>以前作ったUnkoNoseのWeb版を作りました。 UnkoNose Web版 ...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="cs" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[以前作った<a href="http://blog.moro-tyo.net/2006/11/unkonose.html">UnkoNose</a>のWeb版を作りました。<br />
<br />
<a href="http://s.moro-tyo.net/unkonose/">
<img alt="UnkoNose_web.png" src="http://blog.moro-tyo.net/2008/07/05/UnkoNose_web.png" class="mt-image-none" style="" border="3" height="535" width="256" />
<br />
UnkoNose Web版</a><br />
<br />
顔検出には、<a href="http://kaolabo.com/webapi/">顔ラボのWebAPI</a>を使用しているのですが、WebAPIの利用回数の上限が少なすぎて、すぐに、うんこがのせられなくなってしまいます。<br />
<br />
でも、<a href="http://kaolabo.com/webapi/mashup">顔ラボのマッシュアップアプリ</a>に紹介されると利用回数の上限を増やしてくれるらしいので、応募しときました。<br />
<br />
<br />
みんなの頭にうんこあれ。<br />]]>
        
    </content>
</entry>

<entry>
    <title>blogを移転しました</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2008/06/blog.html" />
    <id>tag:blog.moro-tyo.net,2008://1.23</id>

    <published>2008-06-03T14:10:00Z</published>
    <updated>2008-06-03T14:16:44Z</updated>

    <summary>やっと、旧blogから、ここへ移転しました。たいしたこと書けませんが、どうぞよろ...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="etc" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[やっと、<a href="http://blog.livedoor.jp/moro_tyo/">旧blog</a>から、ここへ移転しました。<br /><br />たいしたこと書けませんが、どうぞよろしくお願いします。<br />]]>
        
    </content>
</entry>

<entry>
    <title>机上の空論のメモ帳</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2007/06/post-11.html" />
    <id>tag:blog.moro-tyo.net,2007://1.21</id>

    <published>2007-06-15T12:52:06Z</published>
    <updated>2008-06-03T12:52:53Z</updated>

    <summary> ここのblogよりも、もっと気軽に書けるメモ帳みたいなものが欲しいなあと思って...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="etc" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[ ここのblogよりも、もっと気軽に書けるメモ帳みたいなものが欲しいなあと思って、はてなダイアリーで日記を開設することにしました。<br />
<br />
<a href="http://d.hatena.ne.jp/moro-tyo/" target="_blank">机上の空論のメモ帳</a><br />
<br />
もし、暇なら見てください。<br />
どうぞ、よろしく。<br />]]>
        
    </content>
</entry>

<entry>
    <title>[メモ]ドキュメンタリ一覧</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2006/12/post-9.html" />
    <id>tag:blog.moro-tyo.net,2006://1.19</id>

    <published>2006-12-17T12:46:36Z</published>
    <updated>2008-06-03T12:48:21Z</updated>

    <summary> ドキュメンタリを見て、不意に感動させられることってありますよね。 特に私は、あ...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="et" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[ ドキュメンタリを見て、不意に感動させられることってありますよね。<br />
特に私は、ある無名の人の生き方を追っていく形式のドキュメンタリにやられることが多いです。<br />
<br />
ということで、以下は民放各局でのドキュメンタリ一覧です。<br />
ほぼ、自分用メモ。<br />
<br />
フジテレビ: <a href="http://www.fujitv.co.jp/b_hp/fnsaward/">FNSドキュメンタリー大賞</a>　不定期深夜　<a href="http://www.fujitv.co.jp/b_hp/fnsaward/backnumber/index2.html">受賞作品一覧と放送日程</a><br />

　　　　　　　<a href="http://www.fujitv.co.jp/b_hp/thenonfx/">ザ・ノンフィクション</a>　日曜昼<br />
　　　　　　　<a href="http://wwwz.fujitv.co.jp/nonfix/index.html">NONFIX</a>　木曜深夜<br />
日本テレビ: <a href="http://www.ntv.co.jp/document/">NNNドキュメント</a>　日曜深夜<br />
朝日テレビ: <a href="http://www.tv-asahi.co.jp/telementary/">テレメンタリー</a>　月曜深夜<br />
TBS:　　　　ドキュメント・ナウ(専用ページなし)　月曜深夜<br />]]>
        
    </content>
</entry>

<entry>
    <title>他人の家に行って、ダメージを与える方法</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2006/12/post-10.html" />
    <id>tag:blog.moro-tyo.net,2006://1.20</id>

    <published>2006-12-11T12:48:42Z</published>
    <updated>2008-06-03T12:50:10Z</updated>

    <summary> うんこをして、流さないで帰る 　・ダメージ小  　・なるべくトイレットペーパー...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="diary" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[ <strong>うんこをして、流さないで帰る</strong><br />
　・ダメージ小 <br />
　・なるべくトイレットペーパーを使わないで、うんこが見えるようにするとより効果的 <br />
<br />
<strong>うんこを天井に叩きつける</strong> <br />
　・ダメージ大 <br />
　・掃除しにくいので、かなりのダメージを与えることができる <br />
]]>
        
    </content>
</entry>

<entry>
    <title>UnkoNose で うんこ のせ!</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2006/11/unkonose.html" />
    <id>tag:blog.moro-tyo.net,2006://1.18</id>

    <published>2006-11-16T12:40:34Z</published>
    <updated>2008-06-03T12:45:42Z</updated>

    <summary>秋の夜長、うんこでも載せないとやってられません。 画像処理ライブラリの Open...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="cs" scheme="http://www.sixapart.com/ns/types#category" />
    
        <category term="study" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[秋の夜長、うんこでも載せないとやってられません。<br />
<br />
画像処理ライブラリの <a href="http://sourceforge.net/projects/opencvlibrary/" target="_blank">OpenCV</a> を用いて顔検出を行い、頭にうんこを載せるソフトウェア UnkoNose を作りました。<br />
<br />
<a href="http://www.ne.jp/asahi/hp/moro-tyo/UnkoNose.zip">UnkoNose をダウンロード</a><br />
<br />
【はじめに】<br />

.NET Framework 2.0 がインストールされていないと実行できません。<br />
Windows Update からインストールできます。<br />
<br />
【使い方】<br />
上でダウンロードした UnkoNose.zip を解凍し、UnkoNose.exe をダブルクリックして、出現したフォームにお好みの画像ファイルをドロップするだけです。<br />
<img alt="UnkoNose01.PNG" src="http://blog.moro-tyo.net/img/UnkoNose01.PNG" class="mt-image-none" style="" height="196" width="354" /><br />
<br />
すると・・・<br />
<br />
<img alt="UnkoNose02.PNG" src="http://blog.moro-tyo.net/img/UnkoNose02.PNG" class="mt-image-none" style="" height="128" width="361" /><br />
あら、はしたない！<br />

頭に うんこ 載ってますよー！！！<br />
<br />
<br />
顔検出ミスると、わけのわからんところに うんこ が出現しますが、それは サプライズうんこ ということで。<br />
あと、フォルダ内の"unko.bmp"ファイルを差し替えると他の画像も頭に載せることができます。<br />
なお、白画素(R=255,G=255,B=255)は透明扱いになりますので。<br />
<br />
あなたも頭にいろいろ載っけてみよう！<br />]]>
        
    </content>
</entry>

<entry>
    <title>数学的帰納法 は、帰納法 ではない</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2006/11/post-8.html" />
    <id>tag:blog.moro-tyo.net,2006://1.17</id>

    <published>2006-11-04T12:37:48Z</published>
    <updated>2008-06-03T12:39:53Z</updated>

    <summary> Wikipediaの&quot;数学&quot;のページ( http://ja.wikipedia...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="study" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[ Wikipediaの"数学"のページ( <a href="http://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6">http://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6</a> )をなんとなく見てたら、<br />
<blockquote>数学は、量、構造、変化、空間といったものを対象として、いくつかの仮定から始めて、決められた演繹的推論をすすめることで得られる事実（定理）のみからなる体系を研究する学問である。</blockquote>って、書いてあった。<br />
<br />
あれ？そういえば、数学的帰納法とかいうのあったなぁ・・・と高校のころの記憶がよみがえった。<br />
数学は、"演繹的推論をすすめることで得られる事実（定理）のみからなる体系を研究する学問"なら、数学的帰納法ってなんなの？という疑問が沸いた。<br />

で、Wikipediaでいろいろ見てみた。<br />
<br />
演繹 ( <a href="http://ja.wikipedia.org/wiki/%E6%BC%94%E7%B9%B9">http://ja.wikipedia.org/wiki/%E6%BC%94%E7%B9%B9</a> )<br />
<blockquote>演繹法 は、一般的・普遍的な仮定からより個別的・特殊的な結論を得る推論方法である。対義語は帰納法。帰納の導出関係は蓋然的に正しいのみだが、演繹の導出関係は前提を認めるなら絶対的、必然的に正しい。</blockquote><br />
帰納 ( <a href="http://ja.wikipedia.org/wiki/%E5%B8%B0%E7%B4%8D">http://ja.wikipedia.org/wiki/%E5%B8%B0%E7%B4%8D</a> )<br />
<blockquote>帰納法 とは、個別的・特殊的な事例から一般的・普遍的な規則を見出そうとする推論の方法である。対義語は演繹法。演繹においては前提が真であれば結論も必然的に真であるが、帰納では前提が真であるからといって結論が必ずしも真であることは保証されない。<br />

...(中略)...一般的にいって帰納は、あくまでも確率・確度といった蓋然性の導出に留まる。<br />
...(中略)...帰納とは、個別・特殊的事実の多さから結論がどのくらい確からしいものかを導くための推理といえる。</blockquote><br />
数学的帰納法 ( <a href="http://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E7%9A%84%E5%B8%B0%E7%B4%8D%E6%B3%95">http://ja.wikipedia.org/wiki/%E6%95%B0%E5%AD%A6%E7%9A%84%E5%B8%B0%E7%B4%8D%E6%B3%95</a> )<br />
<blockquote>数学的帰納法 とは、有限回の議論で可算無限個の対象に対する命題を証明するための数学の論法である。</blockquote><br />
<br />
帰納法は確率的規則を導くのだけれど、数学的帰納法は対象としている範囲(可算無限個)では絶対的に正しい。<br />
ということは、数学的帰納法は帰納法ではないじゃんか。<br />
<br />

あとで調べたら、はてなキーワード( <a href="http://d.hatena.ne.jp/keyword/%BF%F4%B3%D8%C5%AA%B5%A2%C7%BC%CB%A1">http://d.hatena.ne.jp/keyword/%BF%F4%B3%D8%C5%AA%B5%A2%C7%BC%CB%A1</a> )にも書いてあった。<br />
<blockquote> ...(中略)...余録であるが数学的帰納法は、哲学的に言えば演繹法（Deduction）であって、帰納法（Induction）ではない。</blockquote><br />
<br />
数学的帰納法って、最後に"帰納法"って書いてあるから帰納法みたいだ。<br />
でも、数学的帰納法は帰納法的な考え方を用いているが演繹法である。<br />
こんな名前だと、みんな勘違いするよ！<br />
だから、帰納的演繹法 とかに名前変えたほうがいいんじゃないかな。<br />
]]>
        
    </content>
</entry>

<entry>
    <title>主成分分析、独立成分分析</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2006/10/post-7.html" />
    <id>tag:blog.moro-tyo.net,2006://1.16</id>

    <published>2006-10-30T12:21:20Z</published>
    <updated>2008-06-03T12:36:59Z</updated>

    <summary>主成分分析(PCA)とは、特徴量の次元がバカでかくなりすぎた場合に行われる次元収...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="study" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[主成分分析(PCA)とは、特徴量の次元がバカでかくなりすぎた場合に行われる次元収縮の手法である。<br />
参考: <a href="http://www-pse.cheme.kyoto-u.ac.jp/%7Ekano/document/text-PCA.pdf">http://www-pse.cheme.kyoto-u.ac.jp/~kano/document/text-PCA.pdf</a><br />
　　　<a href="http://aoki2.si.gunma-u.ac.jp/lecture/PCA/index.html">http://aoki2.si.gunma-u.ac.jp/lecture/PCA/index.html</a><br />
主成分分析は広く知られている手法で、統計学で習った人も多いかもしれない。<br />
<br />
パターン認識の分野では、この主成分分析と組み合わせて、独立成分分析(ICA)がしばしば使われる。<br />

<br />
独立成分分析と主成分分析の処理は似ている。だが、主成分分析は(主成分の)軸は直交しなければいけないのに対して、独立成分分析では軸は直交しなくてもよいという点が違う。独立成分分析では、データ分布の独立性を見るのだ。<br />
<br />
独立成分分析は fastICA ( <a href="http://www.cis.hut.fi/projects/ica/fastica/">http://www.cis.hut.fi/projects/ica/fastica/</a> ) で簡単に計算できる。<br />
<br />
以下では、fastICA の例をもって説明する。<br />
<br />]]>
        <![CDATA[<img alt="ica01.PNG" src="http://blog.moro-tyo.net/img/ica01.PNG" class="mt-image-none" style="" height="676" width="225" /><br />
これを元データとして、主成分分析、独立成分分析をしてみる。<br />
<br />
<br />
<img alt="ica02.PNG" src="http://blog.moro-tyo.net/img/ica02.PNG" width="548" height="674" class="mt-image-none" style="" /><br />
これが主成分分析をした結果。<br />
軸は直交しなければいけないという条件があるので、ひし形のまま。<br />
<br />
<br />
<img alt="ica03.PNG" src="http://blog.moro-tyo.net/img/ica03.PNG" width="517" height="682" class="mt-image-none" style="" /><br />
これが独立成分分析をした結果。<br />

軸は直交しなくてもよく、最も独立性がある分布に軸を取ることができる。<br />
このことにより、のちの分類などの処理の識別制度を高めることができるのだ。<br />
<br />
<br />
ただ、独立成分分析は次元の収縮ができないので、主成分分析と組み合わせて使われることがほとんど。<br />
パターン認識では<br />
特徴量抽出→主成分分析で次元削減→独立成分分析で独立性分析→分類器で学習・分類<br />
っていう感じで使われることが多い。<br />
<br />
たぶん。<br />]]>
    </content>
</entry>

<entry>
    <title>画像ファイルから全画素値を取ってくる時の速度比較</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2006/10/post-6.html" />
    <id>tag:blog.moro-tyo.net,2006://1.15</id>

    <published>2006-10-09T15:14:29Z</published>
    <updated>2008-06-02T15:17:11Z</updated>

    <summary> 画像ファイルの全画素値を配列にコピーする場合の速度比較を行った。 比較するのは...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="study" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[ 画像ファイルの全画素値を配列にコピーする場合の速度比較を行った。<br />
<br />
比較するのは以下の3手法。<br />
<br />
・方法1: C#<br />
　- C# で Bitmap クラスの GetPixel メソッドを使った<br />
　- 普通の方法<br />
・方法2: C#(unsafe)<br />

　- C# で unsafe を使った<br />
　- ちょっと工夫した方法<br />
・方法3: C++<br />
　- C++ のクラスライブラリを作成し、C# から参照して使った<br />
　- 画像処理ライブラリとして、OpenCV を用いた<br />
<br />
一応、比較用に書いたソースは記事末に載っけときました。<br />
<br />
557x850 の 24ビットカラー JPEG画像の場合<br />
方法1: 21.6388260748251 (秒)<br />

方法2: 5.06153430618396 (秒)<br />
方法3: 0.0533208579219269 (秒)<br />
<br />
方法1の20秒は、ありえないぐらい遅い。<br />
unsafe を用いた方法2で処理時間は1/4になったが、C++を用いた方法3と比べると100倍近く遅い。<br />
<br />
方法1はポインタが使えないから遅いというのは分かるような気がするが、ポインタが使える方法2と方法3がこんなに違うのは不思議だ。<br />
<br />
JPEG のデコードで時間が掛かってるのか？と思って、ビットマップ画像でも比較。<br />
<br />
557x850 の 24ビットカラー ビットマップ画像の場合<br />

方法1: 21.81745337468 (秒)<br />
方法2: 5.01866893115639 (秒)<br />
方法3: 0.0364773279243997 (秒)<br />
<br />
あれ？方法1と方法2があんまり変わらんのに、方法3がますます速くなってるし。<br />
<br />
<br />
まとめ<br />
・大量の画像を相手にしなければいけないときは C++ を使おう。<br />
<br />
<br />

【追記(2007/11/24)】<br />
Bitmap.Width, Bitmap.Height は意外にコストが高い（内部的にDllImportしたgdiplus.dllを利用している）ので、forループ前に一旦変数に入れてやると多少パフォーマンスが改善されるそうです。(コメントからの情報)<br />
<br />]]>
        <![CDATA[<strong>C#</strong>
<pre>            string fileName = @"C:\test\test.jpg";
            
            Bitmap src = new Bitmap(fileName);

            int[, ,] srcArray0 = new int[src.Width, src.Height, 3];
            int[, ,] srcArray1 = new int[src.Width, src.Height, 3];
            int[, ,] srcArray2;

            Stopwatch sw = new Stopwatch();
            sw.Start();

            for (int x = 0; x < src.Width; x++)
            {
                for (int y = 0; y < src.Height; y++)
                {
                    Color c = src.GetPixel(x, y);
                    srcArray0[x, y, 0] = c.R;
                    srcArray0[x, y, 1] = c.G;
                    srcArray0[x, y, 2] = c.B;
                }
            }

            sw.Stop();
            double sec = (double)sw.ElapsedTicks / (double)Stopwatch.Frequency;
            Console.WriteLine("process0: " + sec.ToString());

            sw.Reset();
            sw.Start();

            BitmapData imgData = src.LockBits(new Rectangle(0, 0, src.Width, src.Height), ImageLockMode.ReadWrite, src.PixelFormat);

            unsafe
            {
                byte* p = (byte*)imgData.Scan0.ToPointer();
                for (int i = 0; i < src.Height; i++)
                {
                    for (int j = 0; j < src.Width; j++)
                    {
                        int offset = imgData.Stride * i + (imgData.Stride / imgData.Width) * j;
                        srcArray1[j, i, 0] = p[offset + 2];
                        srcArray1[j, i, 1] = p[offset + 1];
                        srcArray1[j, i, 2] = p[offset + 0];
                    }
                }

            }
            src.UnlockBits(imgData);

            sw.Stop();
            sec = (double)sw.ElapsedTicks / (double)Stopwatch.Frequency;
            Console.WriteLine("process1: " + sec.ToString());

            sw.Reset();
            sw.Start();

            srcArray2 = Class1.TestFunc(fileName);

            sw.Stop();
            sec = (double)sw.ElapsedTicks / (double)Stopwatch.Frequency;
            Console.WriteLine("process2: " + sec.ToString());</pre>
<br />
<strong>C++</strong>
<pre>	array＜int,3＞^ Class1::TestFunc(System::String ^fileName) {
		IplImage* srcImg = cvLoadImage((char*)(void*)Marshal::StringToHGlobalAnsi(fileName));

		array＜int,3＞^ tmp = gcnew array＜int,3＞(srcImg->width,srcImg->height,3);


		CvPixelPosition8u pos_srcImg;
		CV_INIT_PIXEL_POS( pos_srcImg,
			(unsigned char *) srcImg->imageData,
			srcImg->widthStep,
			cvGetSize(srcImg),
			0, 0,
			srcImg->origin);
		uchar *ptr_srcImg;

		for(int x=0 ; x＜srcImg-＞width ; x++){
			for(int y=0 ; y＜srcImg-＞height ; y++) {
				ptr_srcImg = CV_MOVE_TO(pos_srcImg, x, y, 3);
				tmp[x,y,0] = ptr_srcImg[2];
				tmp[x,y,1] = ptr_srcImg[1];
				tmp[x,y,2] = ptr_srcImg[0];
			}
		}
		
		return tmp; 
	}</pre>]]>
    </content>
</entry>

<entry>
    <title>サンプリング定理・フーリエ変換</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2006/08/post-5.html" />
    <id>tag:blog.moro-tyo.net,2006://1.14</id>

    <published>2006-08-03T15:10:57Z</published>
    <updated>2008-06-02T15:12:29Z</updated>

    <summary>(真上から見たイメージの)おっぱいを標本化する場合。  おっぱいの周波数の2倍以...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="study" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[(真上から見たイメージの)おっぱいを標本化する場合。 <br />
おっぱいの周波数の2倍以上の点で、標本化しなければならない。 <br />
さもないと、おっぱいが、2つではなくなるかもしれない(2倍以上の点でも標本点が少ないとカップ数は変わる場合がある)。 <br />
<br />
また、おっぱいをフーリエ変換し、パワー(振幅)スペクトルを求めることにより、おおよそのカップ数が、推定できる。 <br />
<br />
さらに、おっぱいにローパスフィルタを適用することにより、高周波成分である乳頭が排除でき、R-18指定から、R-15指定に次元を落とすことができる。 <br />]]>
        
    </content>
</entry>

<entry>
    <title>[メモ] ボーカルリデューサー</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2006/08/post-4.html" />
    <id>tag:blog.moro-tyo.net,2006://1.13</id>

    <published>2006-08-02T15:08:59Z</published>
    <updated>2008-06-02T15:10:36Z</updated>

    <summary> MP3からボーカルを抜いてカラオケ状態にするボーカルリデューサー http:/...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="study" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[ MP3からボーカルを抜いてカラオケ状態にするボーカルリデューサー<br />
<a href="http://www.ringolab.com/note/daiya/archives/004666.html">http://www.ringolab.com/note/daiya/archives/004666.html</a><br />
<br />
ボーカルリデューサーとは<br />
・音楽ファイルからボーカル部分を自動認識技術で発見し、除去する。<br />
<br />
特徴<br />
・音楽のほとんどが、ボーカルが中央に定位していることを利用し、ボーカル部分を除去。<br />

・つまり、ボーカルは左右のスピーカで同じ音が流れるが、楽器音は左右のスピーカで違う音が流れるということを利用<br />
<br />
アルゴリズム概要<br />
・1. フーリエ変換、ハートレー変換などで周波数解析<br />
・2. 両チャンネルの振幅スペクトル・位相スペクトルを比較し、非常に近いもののみをリデュース<br />
<br />
まとめ<br />
・CDのようなにちゃんとステレオを意識して作ってある音楽ファイルではないと適応できない。<br />
・なので、汎用性はあまりない。<br />
<br />

たぶん、音を研究している人が自分が欲しいからという目的だけで作ったものだろう。<br />]]>
        
    </content>
</entry>

<entry>
    <title>[メモ] System::String^ →　char*, wchar_t*, LPSTR, LPWSTR への変換 (C++/CLI)</title>
    <link rel="alternate" type="text/html" href="http://blog.moro-tyo.net/2006/07/-systemstring-char-wchar-t-lps.html" />
    <id>tag:blog.moro-tyo.net,2006://1.12</id>

    <published>2006-07-14T15:05:40Z</published>
    <updated>2008-06-02T15:08:35Z</updated>

    <summary>VS2005 C++/CLI で、アンマネージなライブラリを使う場合、ライブラリ...</summary>
    <author>
        <name>moro-tyo</name>
        
    </author>
    
        <category term="study" scheme="http://www.sixapart.com/ns/types#category" />
    
    
    <content type="html" xml:lang="ja" xml:base="http://blog.moro-tyo.net/">
        <![CDATA[VS2005 C++/CLI で、アンマネージなライブラリを使う場合、ライブラリの関数の引数がアンマネージな文字列型(char*, wchar_t*, LPSTR, LPWSTR)の時がある。そんな時に必要な変換。<br />

<pre>using namespace System::Runtime::InteropServices;	//Marshal使うから

//変換元
String ^srcStr = "Hello";

//char*
char* dstChar;
dstChar = (char*)(void*)Marshal::StringToHGlobalAnsi(srcStr);

//wchar_t*
wchar_t *dstWchar_t;
int strLen = srcStr->Length;
dstWchar_t = (wchar_t*)malloc((strLen+1)*sizeof(wchar_t));
for(int i = 0 ; i < strLen ; i++) {
　　dstWchar_t[i] = srcStr[i];
}
dstWchar_t[strLen] = '\0';

//LPSTR
LPSTR dstLPSTR;
dstLPSTR = (LPSTR)dstChar;

//LPWSTR
LPWSTR dstLPWSTR;
dstLPWSTR = (LPWSTR)dstWchar_t;</pre>
wchar_t* への変換だが、文字数が高々知れてるのならば、malloc を使わずに<br />
wchar_t dstWchar_t[100];<br />
ってすればよい。 <br />
]]>
        
    </content>
</entry>

</feed>

