いぬおさんのおもしろ数学実験室

おいしい紅茶でも飲みながら数学、物理、工学、プログラミング、そして読書を楽しみましょう

プログラミング

waveモジュールを使ってwavファイルのサウンドデータを逆順にする

前回の記事の続きです。wavファイルのサウンドデータを逆順に並べて保存するのですが、以下のPythonのwaveモジュールを使ったコードでできます。逆順に並べ替えているのは for i in range(buf.size): #bufの内容を逆転してbuf1へ格納 buf1[i] = buf[buf.size…

Unityでアセットバンドルを使わずにアセット(wavファイル)を暗号化する

Unityでアプリを書くときの、サウンドファイルの暗号化の方法です。少し前の記事で書いたように、最初ぼくはサウンドファイル、画像をアセットバンドルとして扱い、アセットバンドルを暗号化する方法でやってみたのですが、PCではうまく行きましたが実機(ス…

Unityのマップで、どのタイルと当たったのか判定する

前回紹介した、『たのしい2Dゲームの作り方 第2版』(STUDIO SHIN2023翔泳社)にひと通り目を通しました。スプライトなど、アセットはダウンロードして使わせてもらい、あれこれ実験をやりました。大変勉強になりました。 たのしい2Dゲームの作り方 第2版 Un…

さあ、次はプログラミング!

立体の復元実験もケリはつき(よくない結果でしたが……)、夏休みもそろそろ終わりです。次はまたアプリでも作るかな……と1週間くらい前から勉強を再開しました。本も購入。『たのしい2Dゲームの作り方 第2版』(STUDIO SHIN2023翔泳社)です。 たのしい2Dゲ…

写真からチェスボードを使って立体を復元(14)(手順のまとめ)

ここまでチェスボードを使ってカメラの校正をして写っている立体を復元する方法を説明してきました。長かったですし、毎回「なるほど!」と納得していたつもりでも、いざ「さあプログラミング!」というとき「あれ、何をすればいいんだっけ?」と必ずなりま…

写真からチェスボードを使って立体を復元(13)(2枚の写真から空間内の点の座標を求める)

ここまでで3枚の写真からカメラの内部パラメータAを求め、基礎行列Fを求め、基本行列Eを求め、回転行列R、平行移動ベクトルtを求めました。ここからは3枚のうちの2枚を使えば立体の頂点などの(空間内の)座標を計算できます。この部分を説明します。 …

写真からチェスボードを使って立体を復元(12)(基礎行列Fから回転行列R、平行移動ベクトルtを求める(2))

続きです。今回まででR、tが求まります。全体、『写真から作る3次元CG』に従っています。あちこち「あれ?」と躓いたところがあり、後で読んですぐ理解できるよう、かなり詳しく説明をつけておきました。1回引っかかったところは次回も必ず引っかかるもので…

写真からチェスボードを使って立体を復元(11)(基礎行列Fから回転行列R、平行移動ベクトルtを求める(1))

前回の記事でFが求まります。次に、このFからE、R、tを求めます。やはり結構大変です。 次回、Cを最小にして回転行列、平行移動のベクトルを実際に求めます。今回の記事は何回も紹介している『写真から作る3次元CG』によっています。 3次元コンピュータビジ…

写真からチェスボードを使って立体を復元(10)(8点法で2枚の写真から基礎行列Fを求める)

Fは成分が9個ですから、「9点法」が正しいのでは?……と思うかも知れませんが、エピポーラ方程式を見るとFの成分が全部2倍になっていても成立します。いろいろなテキストでこういった事情を「Fのスケールは任意」と表現しています。例えばFの右下の成分を1に…

写真からチェスボードを使って立体を復元(9)(座標変換について解説!)

ここで、ぼくがこの分野を勉強し始めて最も悩んだことのひとつ、座標変換について整理しておきます。式が明らかになっていても、落ち着いて考えると「このmはどこの座標で測ったものなんだっけ?」とか、「どちらの座標軸を動かしたと考えている?」とか、…

写真からチェスボードを使って立体を復元(8)(全体の流れを確認)

ここで少し休憩。写真からチェスボードを使って立体を復元(1)~(7)で一応、チェスボードの映り込んだ写真3枚から撮影に使ったカメラの内部パラメータ行列Aを求める方法を説明しました。初めてだと特に、「理屈は分かったけれど、じゃあ具体的に何をどう…

写真からチェスボードを使って立体を復元(7)

いよいよ次の連立方程式を解きます。 以上で定数倍の定数λも含め、変数が全て求まりました。参考にしているテキスト『写真から作る3次元CG』では結果は載っていますが、計算の過程は書いてありません。結構大変でした。なお、eがこの記事の結果とは一部違…

写真からチェスボードを使って立体を復元(6)

続きです。カメラの内部パラメータ行列、Aを求めます。Aの成分は、下の通り添え字がついているものがあります。意味が分かりやすいからですが、単純に連立方程式などを解くときには却って見づらくなります。そこでこれらはアルファベット1文字で表すことに…

写真からチェスボードを使って立体を復元(5)

続きです。やや分かりにくい式変形が含まれます。ノートに書いて理解してください! 次回以降ではこうして求めたBからAを求めます。参考にしているテキスト(『写真から作る3次元CG』)ではこの計算は省略されています。ここも丁寧に書きます。 追記 202…

写真からチェスボードを使って立体を復元(4)

続きです。自分があとで見て分かるよう、かなり丁寧に書いています。相変わらず手書きですがご勘弁を……! 次回以降で具体的にAを求めます。個人的には意外というか、「なぜこんなに大変なの?」という気持ちです。アングルを変えて何枚か写真を撮れば、チェ…

写真からチェスボードを使って立体を復元(3)

続きです。写真上の点とチェスボード上の点の対応からHを求めます。 このあと、順にHを求め、Aを求め、Rとtを求めます。

写真からチェスボードを使って立体を復元(2)

まず基本。以下で、チェスボード上の点が写真上ではどのような座標に対応するのか、計算するための式を求めます。 Hは3行3列の行列です。u, v, u', v' の対応からHの成分が分かれば先へ進めます。 今回はここまで。カメラ座標系(の座標軸)を、回転R(空間…

写真からチェスボードを使って立体を復元(1)

現在、また「何枚かの写真に写った立体をPCで再現する」というテーマで理論の整備、実験をしています。具体的には、立体の写真(建物の写真、家具の写真、……)を何枚かPCに渡して、PC内でそれらの立体の頂点の座標を計算します。そうすればPC内でそ…

バッチ正規化を入れて数字認識の実験をした結果

バッチ正規化の実験(勾配確認)がうまくいったので、実際にMNIST(数字認識の実験のためのデータセット)を使って認識率がどうなるか試してみました。なお、バッチ正規化では正規化(標準化)の式として前回の記事の通りのもの(γ・(x-μ)/s+β)を用い…

バッチ正規化の逆伝播の式を導く

バッチ正規化の話です。前回書いたとおり、画像認識のネットワークでデータを処理するとき、「各層で、特定のいくつかのユニットだけが値が大きくなる」という現象が起こります(「アクティべーションの分布が偏る」)。出力層でも「2」ばかりが出力されたり…

画像認識でトラブった話。出力層のユニットの値があまり変化しない

(Pythonのライブラリなどを一切使わない)画像認識の実験の中間報告です。 www.omoshiro-suugaku.com CIFAR-10を使って画像認識の実験をしていましたが、途中までは快調だったんですがつまずきました。いろいろがんばって光明が見えたので報告です。1人で書…

雑談。CIFAR-10で画像認識の中間報告、C#で出したバグ

しばらくぶりの更新です。画像のデータセット、CIFAR-10を使って画像認識の実験(の準備)中です。 www.omoshiro-suugaku.com 前から凄く興味があって、とにかくやってみたかったのです。学校も冬休みに入り、時間もかなり自由になったので進んでいます。何…

画像認識の実験始め。CIFAR-10使います

CIFAR-10というデータセットがあります。前、MNIST(エムニスト)というデータセットを使ったことがあります。これは0から9までの数字認識の実験などのための画像のセットで、何年か前にC#でプログラムを書いて数字認識を試しました。CIFAR-10は飛行機、自…

画像に好きなフォントで字を書く

必要があって調べ、うまくいったので記録しておきます。画像の好きな位置に好きなフォントで字を書く方法です。Pythonの画像処理ライブラリ、Pillow(PIL)がインストールされていることが必要です。 デスクトップに使いたいフォントのファイルを置いておいて…

Pythonのmatplotlibで、新たにインストールしたフォントを使いたい

M+フォントを使っています。商用の利用も可、ということで、開発者の皆様には頭が上がりません。前、スマホゲームを作っていたとき「フォントにも著作権がある」と分かり、対応のためにインストールしたのでした。フォントを作るのは恐らくたいへんな時間と…

FFTの書籍紹介。次の勉強は……

以前簡単に紹介しました。ここのところ、FFTの使い方をずっとまとめていて、頻繁に使っていた本です。 Pythonで学ぶ実践画像・音声処理入門 作者:伊藤 克亘,花泉 弘,小泉 悠馬 コロナ社 Amazon 第3章「音声のフーリエ変換」は14ページだけですが、ここでFFT…

離散フーリエ係数の値を変更するときの注意点

この記事に直接関連した内容の書籍をブログ管理人が出版しました。記事をリファインして、極力詳しく解説しています。見ていただけるとうれしいです(2022年5月15日(日))↓ Python基本サウンドプログラミング~周波数分析,高速フーリエ変換(FFT)入門~ 作者…

0でパディングしてFFTしてもよいのか

FFT(高速フーリエ変換)はデータ数が2の累乗のときに使える方法です。DFTにはそういう制限はありません。最近何回かFFTについて記事を書きました。それによると2の累乗が仮定されているのです。しかし、実際にSciPyのFFTに500データを渡しても無事に(?)F…

プログラミングで、2つの変数の内容を他の変数を使わずに入れ換える方法

タイトル、分かりにくいでしょうか。例えば変数をx、yとしてx=a、y=bと代入されているとします。他の変数は使わず、xにbが、yにaが入っている状態にしたいのです。x=bとやればいいでしょ、……というのはナシ。使えるのはx、yと通常の四則と…

ゲーム作りで辛かったこと

7月にAndroid スマホ用のシューティングゲーム作りを終わらせました。通して考えると特にキツかったことがあります。2つあるんですが、どちらもキツかった原因は同じです。 ①広告の組み込み・表示 せっかくゲームを公開するなら、収入につながった方がうれし…