プログラミング
2Dのゲームなどを作るときの「スプライト」という技術があります。正確な定義は知りませんが、実際にどんなものなのか説明しましょう。背景が表示されていて、そこで小さなキャラクタが動き回るときに使います。背景は固定、動くのはキャラクタだけです。こ…
学生時代から一応やっていて、今でもプログラミングが趣味です。30年前くらいでしょうか、その頃から「フリーウェア」という考え方はあったようです。(インターネットでなくパソコン通信のネットに)自作のソフトを登録して「無料です、気に入ったら使って…
面白そうだったので本屋さんで見つけて中身をざっと確認して即、買いました。楽しみです。未読ですが紹介します。 ゼロから作るDeep Learning ❸ ―フレームワーク編 作者:斎藤 康毅 発売日: 2020/04/20 メディア: 単行本(ソフトカバー) 同じ著者の先生の1冊…
前回の続きです。2枚の写真を再掲。 とりあえず立体を再現するためのコードを載せておきます。2枚の写真は「a.jpg」、「b.jpg」としてありますが、変えられます。1枚目の写真のマジックの位置を25点、マウスでクリックします。それが終わったら対応順を間違…
CMです。細かい話はとりあえず後回し。「おおっ、パソコンと数学を使ってこんなことができるのか!?」と思っていただければO.K.です。 角度を変えて撮った2枚の写真に立体が写っています。基準となる立方体などは写っておらず、対象の立体だけです。ある程…
前回の続きです。後で説明しますが、3枚の写真から基礎行列Fを求めるとき、(方法によりますが)3元(変数が3個)4次の連立方程式を解く必要があります。Pythonに何かないかなと思って探していたらSymPyというライブラリがありました。試してみたので紹…
「新・写真から立体を再現」では、エピポーラ方程式というものを使います(これについては別の回に説明します)。2枚の写真上の対応する点の組を方程式に代入してエピポーラ方程式に含まれる基礎行列Fを決定し、カメラ行列を求めます。このときAx=0の形…
ここまでに紹介した事実を使って、理屈も(ある程度)説明しましょう。Pythonのコードも示します。過去の記事で使うのは以下です。必要に応じて参照してください。 www.omoshiro-suugaku.com www.omoshiro-suugaku.com www.omoshiro-suugaku.com www.omoshir…
QR分解ではありません、RQ分解です。QR分解について書かれているサイトはたくさんありますがRQ分解については少ないようです。しかしこの分野(3Dビジョン)では必要です。 カメラ行列(透視投影行列)Pというのがありました。過去記事にあります…
OpenCV(画像処理ライブラリ)でマウスのクリック位置を取得します。画像を表示しておき、その画像上でマウスイベント(右クリック、左ダブルクリック、……)が起こったときにコールされる関数を定義します。ここでは左クリックしたときに画像上の座標を取得…
後で使うので、固有値、固有ベクトル、連立方程式の非自明解を求めます。例によってPythonです。 #======================================================== #固有値、固有ベクトル、非自明解 # import sys import numpy as np A = np.array([[3, 1, 2], […
特異値分解の理解を確実なものにするため、サイズの違う行列で試してみます。前回にも書いたとおり、Python(Numpy)で特異値分解をした場合、結果の解釈がやや難しい部分があります。今回、行列は3×3、ランク2のものを使います。前回の表を再び載せておきま…
Numpyの特異値分解は、結果の解釈に注意が必要です。説明します。 行列Aは、以下のように特異値分解(SVD)されるのでした。 過去の記事にあります。 www.omoshiro-suugaku.com Pythonのモジュール、Numpyの特異値分解では上のようでなく、別の形の結果が得…
ライプニッツの公式で円周率を求める話を書きました。www.omoshiro-suugaku.com 中学生の頃この話を聞いて、高校生になってから手に入れた電卓で円周率を求めようと頑張りました。ポケットコンピュータというのも現れ始め、これは当時で3万円くらい。何を使…
Python、グラフも色々描けそうです。比較のためなど、いっぺんにいくつか表示することもできます。パラメータはたくさんあるようですが、ここでは本当に基本的なものを。 #======================================================== #画面をいくつかの区画…
電話ので人の声を聞くと、ザラついていると言うか、いかにも「機械を通した声」と言うか、うまい表現の方法がこれ以上見つかりませんがそんな感じに聞こえます。とにかく直に聞いたのとは違いますよね。今回は肉声を電話を通したときの声に変換してみましょ…
音楽やその他の音が鳴っているとき、大きな音なら媒質(音を伝える媒体。空気や水など)は大きく、小さな音なら小さく揺れているはずです。wavファイルに記録するデータはそれをある程度反映しているのでしょう。媒質が変位していないならデータは0、変位し…
音階の話です。音の高さを少しずつ変えて音階ができあがります。音の周波数を少しずつ増やしてだんだん高くなるようにするのです。ラの音を440Hzとしましょう。まずラの音を鳴らすwavファイルを作ってみます。コードを載せておきますが、作り方は前にブログ…
ここまでで確認した事実を組み合わせて、wavファイルのノイズを消す実験をしてみましょう。まず、以下のコードでノイズ入りのwavファイルを作ります。wavファイルの作り方は過去の記事を参照してください。 www.omoshiro-suugaku.com #=====================…
もう少しFFTで遊んでみましょう。使う言語は例によってPython です。今回はノイズの混ざったデータから周波数成分を求めます。元のデータは一見グチャグチャなのですが、FFTで正しい周波数成分が分かります。こういうのを見るとFFT(あるいは数学)は凄いな…
waveファイルを作ってみました。必要なパラメータをそろえ、サウンドデータをこしらえて保存すればOKです。作曲などはできませんので、10秒間、単純に左右で異なる高さの音が鳴るだけのものにしておきます。単純な方が原理は分かりやすいので、ちょうどよい…
16ビットで録音されたwaveファイルでは(getparams()で得られる値がsampwidth=2)、サウンドデータは-32768~32767の範囲の整数値で表され、無音は0です。で、問題です。16ビットで録音されたwaveファイルで、サウンドデータの符号を全て変えたら(1234を-…
そろそろ「複数枚の写真から立体を再現」を実験してみたいと考えています。そのために必要そうなコードを整理しておきます。立体の散布図です。与えられた3次元の点をプロットします。次に(x,y)から式を使ってzを計算し、空間内の点を求めてプロットしてみ…
タイトル通りです。Pythonでやってみました。FFT、IFFTを使います。まず、waveファイル(コードでは'BGM.wav')をオープンしてサウンドデータを読み取り、waveファイルのパラメータを表示します。表示を見てステレオ録音であることを確認してください(コード…
Pythonのmatplotlibでグラフを描画するのは便利で易しいのですが、普通にshow()で描画するとそこでいったん止まってしまいます。時間を追って変化するグラフは描けません。調べるとpause()というのがあるようで、試してみました。plt.show(0.1)の行です。描…
前回、FFTの例をお見せしました。さらに理解を確実なものにするため、もう少し別のパラメータで確認してみましょう。タイトルは「FFTとIFFT」となっていますが、今回はFFTのみで説明します。コードは以下の通りとします。 import numpy as npimport scipy as…
一部書き換え(グラフを含む)ました(2020.1.4)。 備忘録も兼ね、とにかく分かりやすい例を挙げます。説明も十分にしますので、少し前に書いた記事を参照しながらお読みください。 www.omoshiro-suugaku.com N=100点のサンプリングデータを相手にするとし…
続きです。グラフの縦軸の目盛りに関しては別の機会に説明するとして、今回は特に横軸の目盛りの読み方について。まずは基本的な事実を確認しておきます。みなさん分かりきっているからなのか、あまりこういう形にまとめられた資料を見ることがありません。…
少し前、このブログでフーリエ変換について書きました。 www.omoshiro-suugaku.com 量が多くなりますので何回かに分けますが、実際にFFTのコードを書くにはどうしたらいいのか、出てきた結果をどう解釈したらいいのか、など具体的に書いてみます。備忘録を兼…
PCで顔認識するのは大変です。しかし色の組み合わせなら? 例えば1000人に5cm×10cmくらいのカードを持たせます。カードは4区画に分かれており、各区画には7色から選んだ色が塗られます。つまり、カードの色がPCに見分けられれば7の4乗、2401人の見分けが…