つるかめ算メモ その1

たまに使う 「数値的に連立方程式を解くアルゴリズム」を忘れちゃったので 思い出すのと検算用に書いてみた その2は無いかもしれない「ループを回すと収束して解が求まる」 ってアルゴリズム多いので、ニューラルネットワークでもそういうレイヤーが有ると…

コード

from gimpfu import * import os,sys #GLOBAL CONSTANT def inpaint(image,layer): _margin=32 import numpy as np import cv2 #image=gimp.image_list()[0] #layer=active_layer = pdb.gimp_image_get_active_layer(image) import numpy as np import cv2 d…

必要なモジュール

numpy opencv たしか、こちらのものを利用していたはず。 Unofficial Windows Binaries for Python Extension Packages http://www.lfd.uci.edu/~gohlke/pythonlibs/手っ取り早くは 〜〜/PortableApps/GIMPPortable/App/gimp/Python/Lib 、あたりにwhlファイ…

動作環境

Win10で GIMPPortableで確認しました

動作サンプル

http://labs.eecs.tottori-u.ac.jp/sd/Member/oyamada/OpenCV/html/py_tutorials/py_photo/py_inpainting/py_inpainting.html

Gimpから OpenCVの Inpaint関数を利用するプラグイン

画像中の要らないところを選択して、フィルター/下塗り/Inpaintを実行すると、周囲の色で適当に消してくれます。

自分のPCのIPアドレスをPythonで調べる

2017年3月現在 標準モジュールだけで行う方法 import socket,platform print( socket.gethostbyname(platform.uname()[1]) ) windows linuxどちらでもいけるみたい (Macは未確認)

クラスとリスト内包表記 (py)

class _T豚(object): pass class _Tただの豚(_T豚): _飛ぶ=False class _T紅の豚(_T豚): _飛ぶ=True _豚リスト=[_Tただの豚(),_T紅の豚()]print ("飛ばない豚",[ b.__class__ for b in _豚リスト if not b._飛ぶ]) 飛ばない豚 []

prolog

buta(tadanobuta). buta(kurenainobuta). fly(kurenainobuta). tobanaibuta(X):-buta(X),not(fly(X)). ?- tobanaibuta(X). X = tadanobuta .

IF

_飛ぶ=False if not _飛ぶ: print( "ただの豚")

メモリの内容を調べる(PEEK相当をマシン語で)

IchigoJamのBASIC言語にはメモリ内容を調べるPEEK関数があります。 これはBASIC言語から見た仮想的なメモリ空間を16ビットのアドレスで指定して調べるものです。なので、マイコンから見えているメモリ空間上に配置された各種レジスタの内容を読むために、PEE…

マシン語でLチカ

IchigoJamのマシン語からポートを直接操作するサンプルプログラムです。やってること自体はBASIC で LED 文つかったほうが早いですけれどもーアセンブラソースはこんな感じ。JS製 IchigoJam用アセンブラでマシン語に変換できます。 @led r1=[@dat] r3=[r1+0]…

IchigoJam 用アセンブラ

こちらのページマシン語メモリアクセスで画面超速表示! IchigoJamではじめるARMマシン語その3 http://fukuno.jig.jp/1188 のニモニックをIchigoJam用の機械語(BASIC のPOKE文)に変換するアセンブラをjavascriptで組んでみましたAsembler for IchigoJam http…

テーラー展開としての逆フーリエ変換

さて、この微分 F(1) 二階微分 F(2) を使って もとの 時系列データ f を表現してみましょう関数 f を その微分で表現する、といったら、テーラー展開です。f(t) = Σ α1 F(1)(n)(t) + Σ α2 F(2)(n)(t) + + Σ α3 F(3)(n)(t) + Σ α4 F(4)(n)(t) +.... と、無限…

微分としてのフーリエ変換

こんなありがちな時系列データ f が手元にあるとします。 これを微分したい! たとえば、2点間の距離変化のデータだったとしたら、以前よりも伸びてるのか縮んでるのか調べたい。 ありがちなのが、適当に2つの期間の平均値をとって、その差を調べる方法。で…

以下の記事はフィクションであり、実在の関数 公式 アルゴリズムなどとは 一切関わりありません

ホントはエイプリルフールのネタに寝かせておこうかと思ったのですが、ちょっと目が冴えたので落書き。みなさん、すでにフーリエ変換とかFFTはご存知だと思うので そのあたりの説明は省略

プログラム

10 n=0 :rem PWMは0.01ミリ秒単位で周期を指定 11 [0]=2551 :rem G 100000/391.99 Hz *10 12 [1]=3822 :rem C 100000/261.62 Hz *10 13 [2]=3296 :rem E 100000/329.63 Hz *10 14 [3]=2272 :rem A 100000/440 Hz *10 20 play"L4G":Q=[n] 30 Q=[n]:pwm 2,Q*2+…

使い方

上記動画を参照 ボタンを押すと、G -> C -> E -> A -> OFF とモードが変わります。 (モード変更時にその高さの音が鳴ります)

回路

OUT2 LED (負論理 アクティブロー) OUT1 LED (正論理 アクティブハイ)

ウクレレ用ストロボチューナー

こちらの作例をパクろうと思ったのですが、 AVR ストロボ式ギターチューナー S.O.Sモドキ うまくマネできなくて「何の成果も得られませんでした」 こんなきれいに残像が割れませんでした。 (一応、チューニングが合ってくると残像が小さくなる。。。ような…

結果

0 0 1 1 2 1 3 2 中略 23 28657

IchigoJamで動かせるようにBASICに書き換え

手作業でやりましたが、自動化ツールも存在します。 上のblog記事からリンクをたどってください 10 poke #700,#00,#22, #01,#21, #13,#1c, #10,#b5 20 poke #708,#82,#42, #04,#da, #cc,#18, #01,#32 30 poke #710,#19,#1c, #23,#1c, #f8,#e7, #18,#1c 40 po…

コンパイル結果を逆アセンブル

00000000 : 0: 2200 movs r2, #0 2: 2101 movs r1, #1 4: 1c13 adds r3, r2, #0 6: b510 push {r4, lr} 8: 4282 cmp r2, r0 a: da04 bge.n 16 c: 18cc adds r4, r1, r3 e: 3201 adds r2, #1 10: 1c19 adds r1, r3, #0 12: 1c23 adds r3, r4, #0 14: e7f8 b.n…

C言語で書く

int fib(int n) { int x,x1,x2,i; x=0; x1=1; x2=0; for(i=0;i

BASICで書くとこんなん

100 x=0: y=1:z=0:n=23 110 ?0,0 120 for j=1 to n 130 x=y+z: y=z: z=x 140 ?j,x 150 next 32bitマイコンなのでBASICでもけっこう速い。一瞬で表示されます。残念ながら24番目以降を計算するには2バイト整数だと足りないので なんらかの工夫が必要になります

IchigoJam マシン語でフィボナッチ数列 

部屋の隅からDIP ARMマイコン LPC1114が出てきたので 子供パソコンIchigoJam焼いてみた。というわけで BTN 端子に針金を刺してタッチセンサーにするのにも飽きたのでマシン語でフィボナッチ数列を書くなど。 C言語をマシン語にするほうほうは こちらのページ…

その他のサンプル

前回の記事のプラグイン distで、文字を もこもこさせてから 法線推定 normvec → マッピングnorm_mapすると 金メダルとかデコトラみたいな文字も作れます

使いかた

できあがり時のGimpのレイヤー 法線推定 lenaさんのレイヤーをコピーして適用します。(上書きされます 右クリックからフィルター → マップ → normvec ダイアログが表示されたら パラメータは amount(強度)を 2 radious(向きをぼかす半径)を 6にします 法…

プラグイン ダウンロード

http://boxheadroom.com/upload/norm_map20151028.zip中身(norm_map.py normvec.py)をGimpのプラグインフォルダ( GIMPPortable\App\gimp\lib\gimp\2.0\plug-ins など)内にコピーして使用します。 GimpでPythonプラグインが動く環境なら機種に関係無く動く…

説明

画像処理のサンプルでおなじみのlenaさんから 面の向きを推定します(赤が左 緑が下を表現。 blenderの法線マッピングにも使える、かも? これに、金属っぽいテクスチャを貼り付けると lenaさんが金ぴかに!