「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ



あいかわらずのPython3、Pillow、tkinterで画像処理の
プログラムの実験。結果的には、やっぱりロジック自体
は一瞬で処理が終わる内容になってたことが確認できた。
長かった…


どこで時間が掛かってるのかを突き止めるのに、使ってた
Python3実行環境の絡みなんかもあって、いろいろ惑わ
されていたんだな。ようやくクリアになった。


で、最終的な解決に至るまでの実験結果を纏めておく。

まず、そもそもPythonのリスト形式の処理が、一般的に
遅いのかどうかを、リストの初期化やコピー処理なんかを
通して(実メモリへの読み書き)、どのくらい掛かるのか
を眺めてみる。テストのコードは、まずこんな。



Pythonの2次配列のリスト「a」を初期化する処理と、
その初期化に使う関数「f」の定義。
動かすと、ちゃんとリストに値が設定されている。

で、この関数「f」を流用して、でかいリストに値を
設定してみる。



「a」や「b」の初期化に、VirtualBox上のLubuntuで
10秒くらい。大体16Mピクセルくらいの画像に相当。

これを行ってから、「b」に「a」の値を1個1個コピー
していくループを実行してみると、実測で16秒くらい。

ってことは、例のオレオレロジックでは30万画素相当で
10秒くらいかかってしまっていたのに対して、この単純
にリストを1600万画素相当で読み書きするのに10秒くらい
で終わってるんだから、リストの読み書き処理自体は
やっぱりそれなりに速いことが判る。遅い原因は、
どうやらリストの読み書きそのものではない。

でも、VirtualBox環境でも、実機のWindows7(IDLE3環境)
でも、あれこれ骨格以外の処理を削り取って実行してみても、
数秒単位で時間が掛かっちゃう。…なぜだと。


実験用の画像処理プログラムの中で時間が掛かっている
のかなぁ、ホントかなぁ、と、ぼんやり考えてみて、
ふと思い出す。

確か、IDLEって、テキスト文字の表示処理、結構遅いんだ
よなと。
CLIのLinux環境だと、printで標準出力に吐き出しても、
スクロール処理含めて一瞬で大量に表示できるけど、
ILDE上のコンソール画面だと、目で追える位の遅さだった
記憶が。

なので、そもそもループでprint文の表示を行ったら
どのくらい時間掛かるのかをやってみた。

…480行分表示するだけで、数秒掛かってる…。
   お前か!!犯人は!!


というわけで、このprint文で処理中の行を表示する所
をコメントアウトして実行してみると、一瞬で処理が
終わる。


まぁ、そうだよね。Arduinoより遅いって、考えにくい
もんねぇ。うちのポンコツWindows7機(Core2 Quad)
が、Arduinoより速いってことがわかって一安心。


纏めると、
(1)VirtualBox環境で遅かった理由
  →仮想環境でのオーバーヘッドによるもの
(2)Windows7実機環境で遅かった理由
  →IDLE環境のコンソール表示の遅さによるもの

ということだったらしい。この点はとりあえずクリア。


ただ、もうひとつ遅くなってた原因の、平方和の平方根
の方は、別途なんか考えないといけないんだよな。

画像上の4つの代表点から、対象ピクセルまでの距離
(ユークリッド距離)を計算して、その近さに応じて
バックグラウンドの影響を加味しているんだけど、
そのユークリッド距離を求めるには、単純には平方和
の平方根が必要。
それを近時するなり、計算を単純化するなりできれば
いいんだけどなぁ。

C言語なら、有効桁とか考えて、整数型で適当に
丸め上げるとか、色々出来ると思うんだけど、Python
の型って、いまいち自由自在にはならないしなぁ。
うーーーーん。




https://page.auctions.yahoo.co.jp/jp/auction/p664647751

PC-8001 8801マシン語入門が出てた。ベーマガと一緒に。
ベーマガの方は、創刊号の翌々月のやつだな。

ちなみにこのマシン語の本。オイラがZ80のお勉強する
ために買った本だな。バイブルだな。
Z80は、98(というかEpson PC-CLUB)を使うようになって
からは、まったくというほど弄らなくなってしまって、
もう勘所がなくなってしまったんだよな。
レジスタの直交性の低さは、慣れてないとなかなか
プログラム組みにくい。AVR万歳。




https://twitter.com/IPAjp/status/1088270110744207360

こうなると、今後なにか事故が起きたら、

ニュースキャスター「この会社では、COBOLという
特殊なプログラミング言語を使って開発しており、
普通の人では理解が難しく、それが原因でトラブル
が発生したものと考えられています」

なんて話になったりするんだな。




https://twitter.com/koutyan6595/status/1087874031498358785

よくできたコントだな。




https://trafficnews.jp/post/82695

この、音声波形公開しちゃったっていう件。自衛隊の
哨戒能力云々がある程度推し量れちゃうのもあれだ
けど、それ以上に、全世界にレーダーの信号波形を
公開されちゃったっていうのって、潜水艦や戦艦が
キャビテーションノイズをサンプリングされちゃう
のと同じくらいアレなことなのかなぁ、って気がする。

事実上の敵国である北朝鮮にも当然その情報は拾われて
いるだろうから、この波形が来たら、”あの船から
火器管制レーダー来た!”ってバレバレになるという。

まぁ、ある種この戦艦は丸裸にされたようなものと
いっていいんだろうな。




https://twitter.com/HacksterPro/status/1087833294685814785

4輪車だと思ったら、四足で歩き回る。



https://twitter.com/Hacksterio/status/1088185528204386312

リアクションホイールを使うドローン。

ドローンみたいに、空気中で、重力も働いているような
状況なら、振り子みたいに重いものが自然と下に行く
だろうから、こういうリアクションホイールでも
大丈夫なのは判るんだけど、KSPみたいな宇宙開発シーン
だと、微妙にバランスが崩れたままの状態を、
リアクションホイールでバランス取り直し続けるって
用途に使うと、ホイールの回転速度が無限大に発散
してしまうんじゃないかなぁ?って、素朴な疑問が
あるんだよな…。

例の「フロムザレイス」では、作った飛行機の姿勢を
制御するのに、リアクションホイール使って飛ばして
いたんだけど、あれ、水平飛行ですら、常に機首上げ
し続ける必要があるだろうから、リアクション
ホイールが無限大の角速度で回らないといけないん
では?と心配してた。



コメント ( 0 )




Python、Pillow、tkinterでゴニョゴニョやってるアレ。
昨日、Windowsで動かしてみてやっぱり結構な処理時間
が掛かっちゃうのが、なんか腑に落ちなかったので、
あらためて、プログラムの頭からウォークスルーを
してみることにしてみた。

なにしろ、640×480ドットって、30万ピクセルだから、
それで10秒も掛かってるってことは、1ピクセルあたり
30ミリ秒くらい掛かっちゃってる計算。そんな重い
処理してるつもりないし、そのくらいの速度なら、
メモリさえ足りればArduinoでも出来そうじゃね?と
思ってるので。

処理内容的には、評価値を1個参照して、それが閾値
よりも大きいか小さいかを判断して、ドットを打つ
というだけの処理。
それと遅い遅いといわれているPillowのputpixelメソッド
で描いていくというだけの処理。putpixelだけでループ
をすると、1秒掛かるか掛からないか、というぐらい
かな。

残りはいったい何やってるの?と。putpixel以外で
10秒ほどのほぼすべてを食ってると思ってよさそう。

評価値と閾値って言っても、1個手前の計算結果を
元に、差分使って積数の計算しているだけなので
(積数を毎回forループで計算してるわけではない)、
メモリアクセスはせいぜい数回してるだけ。それが
30万回。ミリ秒も掛からないだろう?と。

で、いざ1ステップずつコードを起動直後から眺めて
いくと、ふと、1ドット1ドット毎、ある関数を
呼び出していることに気づいた。
これ、仮に置いておいた関数(あとでちゃんと作り直す)
で、その中で平方和の平方根(sqrtを1回、powを2回)
使ってる。それが1ドットごとに4回計算されてる。

これもしかして遅いんじゃね? と思って、ここを
計算式取っ払って、仮の値に置き換えてみる。

…うん、速くなった。

速くはなったんだけど、まだ4秒くらいかかっちゃう。
1ドットあたり10ミリ秒以上かかっているくらいの
計算だなぁ。

うーーーん。あと一桁二桁速く処理できないの?
じゃないと、もっと大きい画像扱うのには、速度が
足らなさすぎる。


if文が遅いのか、それともメモリアクセス全体的に
遅いのか…?

リストのアクセスって、やっぱ遅いのかなぁ?なんて
思って、ちょっと検索。

https://qiita.com/pegasusBS15/items/75da968c9d3ee285f851

https://qiita.com/shaka/items/f180ae4dc945dc7b9066

決定打は見つからないなぁ。こまったな。
リストのアクセスが、実際にどのくらいの速度が掛かる
ものなのか、実験プログラムでも作って調べてみる
かなぁ?




それにしても、実験中にあれこれしてたときに、あれこれ
Lubuntu環境と行ったり来たりしてて、Lubuntu上のsamba
でファイルやり取りしてたんだけど、なんだかおかしい。

Windows10上のVirtualBoxで動かしているLubuntu上の
samba。Windows7からはこいつにアクセスできるのに、
母艦であるWindows10からアクセスが出来ない。

ついこないだまでちゃんとアクセスできてたから、
多分原因は今月(2019年1月)のWindows Updateだろうと
思うんだけどなぁ。
smb1は使ってないはずなんだけどな。

http://blog.livedoor.jp/nichepcgamer/archives/1073650652.html

それらしいことが見つからない…。

それにしても、ホント、今回のWindows Updateと称する
月例ウィンドウズダウングレードは、ろくでもないこと
しまくってるなぁ。曲がりなりにも有料ソフトだろう…




https://twitter.com/kantamizutamari/status/1086578012265443328

チャーハン。弩迫力




相変わらずアルコールストーブをaliexで物色してる。

https://ja.aliexpress.com/item/-/32915060438.html

安いんだけど、蓋が無いから、途中で火を止めて、燃料
をボトルに戻すってことが出来ないつくりなんだよな。
でも悪く無さそう。

https://ja.aliexpress.com/item/b-1/32850619856.html

五徳が一体型なので、これは便利そう。ただ、ちょっと
大きいよな。もっと薄型(高さが低い)でもいいんじゃ
ないの?という感じもする。持ち運びと安定性の観点で。

https://ja.aliexpress.com/item/-/32885617952.html

これも蓋は無いけど、ウィンドシールド付いてて、
なかなかのアイデア品って感じでいい。

https://shmineta.com/?p=3030

トランギアっぽいデザインで、蓋があって、火力調整も
出来て、コンパクトにたためる(or平べったくできる)
ウィンドシールドが付いてるとばっちりなんだけどな。



コメント ( 0 )




https://twitter.com/tanakh/status/1087288582329364480

Intel、Quarkの製造やめちゃうみたい。とうとう。
なんか、Intelっぽいから「へぇ」って感じだけなん
だけど、せっかく小電力なx86 CPU作ったのにもったい
ないよなぁ。

なんか、IoT向けにクソまじめに作りすぎたんじゃない
かなという気がするんだよな。

せっかくPentium世代のマルチメディア系命令まで対応
してた(記憶では…たしか)んだから、MS-DOSが動く
環境なんかも用意して、マニアックなギークが遊べる
感じにしておけば、ジワジワ浸透しながら意外な方向
まで発展してたかもなぁ、なんて妄想してた。

むしろ、32ビットに限定しちゃったところに限界が
あったりしたのかなぁ?逆に。

IoTは、ARM一辺倒になっちゃうのかな?それとも
RISC-Vあたりが対抗馬に成長したりできるのかなぁ?




Python3、Pillow、tkinterで作ってる画像処理のGUI
プログラム。VirtualBox上のLubuntuで動かしてみた
時に、画像1枚10秒くらい掛かっていたのが気になって
いたので、仮想環境じゃなく、Windows7上のIDLE3で
動かしたら、もっと速く動くのかなぁとか思って、
ちょっと実験。

tkinterは最初から入ってるけど、Pillowは入ってない
ので、まずPillowを入れてみる。

https://choineta.net/135.html

入った。で、改めて実行してみる。

うーーーん。遅い。10秒近く掛かってる感じ。これは
仮想環境と変わらんな。
ってことは、仮想環境のオーバーヘッドが原因ではなく、
処理方法そのものが原因ってことなのかな。困ったな。

今の処理内容って、そんなに重たいことしてないんだ
けどな。必要以上に広い範囲の平均値取りすぎてる
のかなぁ?
それとも、L1、L2キャッシュにヒットしないようなメモリ
の食い方してるのかなぁ?

そうでなければ、Pythonのリスト形式データのアクセス
が根本的に遅いってことなのかなぁ?

よくわからん… とりあえず困ったな。




https://twitter.com/fox3yanagi/status/1087197324424531969

スープラが400万。全然食指は動かないなぁ。
海外勢はともかく、国内では大コケするだろうなぁ。

自動車メーカーが悪いって事じゃなく、経済が回って
無いからなんだろうな。

まぁ、高いよね。クルマ。趣味でもない限り、だれも
持ちたいなんて思わない長物にしか思えないもんな。
昔みたいに、「とりあえずクルマ持って…」なんて
時代でもないし、スマホとかと比べて魅力が大きい
モノでもないしな。


それにしても、その「経済を回さない」方向に一生懸命
活動しているあのジジイを批判したら、大学生の人が
退学にされたらしい。

https://twitter.com/260yamaguchi/status/1087677641598033926

東洋大学、ひどいねぇ。控えめに言って頭おかしいと
思うんだけど。
この東洋大学の「大学の秩序」とやらは、どっちの方向
を向いているんだろう?

以前、東洋大学の経済学の教授の講義を受けたことが
有ったけど、真っ当な人だったし、中身もよかったん
だけどな。
個人個人の問題と、大学組織とでは、全然向いてる
方向も違うのかな?

こんなことが明るみになって、東京医大を希望する学生
が減って…っていう話よりも「ヤバイ大学」って言われ
ないのかね?と気になる。
それにしても、東洋大学はこんな状態として、同じ
ように籍を置いている慶応大学はどうなんだろうな?


でも、日本だけでもないんだよな。

https://twitter.com/Newsweek_JAPAN/status/1087581997814362112

新自由主義にブレーキが掛からないと、そのうち世界
全体がシュリンクするんじゃないのかなぁ?

単純に、儲かっているところがちゃんと税金払うだけで、
もう少しまともになるんだろうし、それ以前に、会社が
設けた利益を、各ステイクホルダにどういう割合で分配
するのかっていうことを、もうちょっとルール化したり
できないものなのかなぁ?

オイラはそもそも会計士とかそっち方面の人たちには
縁が薄いし、そっち方面の話がよくわかってないんだけど、
このあたりのゆがみについてなにかアイデアってないもの
なのかなぁ?

タックスヘイブンの話とか、あれから結局立ち消えに
なってる気がするんだけど、あれから全然進展無いの
かなぁ?



コメント ( 0 )




https://twitter.com/kasanetarium/status/1086530786059157505

一種の光通信だな。これは面白い。スマホやタブレットと、
マイコンボードの間で、無線通信(というかデータ送信)
を簡単に行う方法として、色々妄想が膨らむ。

何bpsくらいだせるんだろうねぇ?LCDの表示能力も気に
なるところだけど、フォトセンサ素子の反応速度も意外に
遅かったりするから、あまり速い速度はえられないだろう
とは思うんだけど。




https://twitter.com/komatsuh/status/1085842230277922816

あぁ、なんでMSXがあるのに、PC-8001は無いんだ?
納得がいかんぞ。




https://twitter.com/keikeichan978/status/1086527453986676736

重力を忘れてる人。




https://twitter.com/sasakisisakisi/status/1086256416451526657

バター。




https://twitter.com/ysuga/status/1086837975848124416

レゴ。これでは対策不十分だとおもうんだよな。
うっかり手を付いたときにサクっとね。




https://twitter.com/tsuchiya_ast/status/1086575721600843776

ISS。すごいねぇ。どうやって計算してるんだろう?
ティコの間近っていうのもかっちょいいな。




https://twitter.com/tyuubatu/status/1086956427426426882

きわどい画像。




やばい。aliexみてると、色々止まらない。

https://ja.aliexpress.com/item/2018-Outdoor-Titanium-Alcohol-Stove-Rack-Combo-Set-Mini-Ultralight-Camping-Stove-Burner-with-Cross-Stand/32917436613.html

アルコールストーブ。
これ、どう見てもチタン製ではないだろうけど、この
質感でステンレスなら特に問題はないんだけどな。

日常で使うわけでもなく、キャンプ用でもなくて、
どっちかっていうと災害時の緊急用備蓄的に。

https://ja.aliexpress.com/item/Aotu-AT6388/32954223171.html

これはステンレス。

https://ja.aliexpress.com/item/TOMSHOO-Outdoor-Titanium-Alcohol-Stove-Rack-Combo-Set-Mini-Ultralight-Camping-Stove-Burner-with-Cross-Stand/32824307017.html

これはチタンかなぁ?

https://ja.aliexpress.com/item/Free-Shipping-Alcohol-Burner-Copper-Alloy-Stove-for-Outdoor-Camping-Survival-Cooking/32771833103.html

トランギアみたいに真鍮でもいいんだけど、上に
のせる五徳が欲しいよな。




https://twitter.com/nek0jita/status/1084504088736198658

1983年に、eスポーツを予測している。




https://twitter.com/chihirow/status/1086259072142196739

100~200万で小型MRIなんて作れるものなのかなぁ?
面白そうだけど、もし作れたら、ヘリウム足りなく
なったりしないのかな?




https://twitter.com/kuri_kurita/status/1086780417879883776
https://twitter.com/genkuroki/status/1085681973517901824

マッチポンプの典型かな。

https://twitter.com/samurai26katana/status/1085778427376848896

この辺もどう見てもおかしいよなぁ。



コメント ( 0 )




相変わらずPython3つかってGUIアプリを組むための練習。

こないだみつけたPDF

http://www.yamamo10.jp/yamamoto/comp/Python/tk_exercise01/text/python.pdf

これ、オイラの期待していたような構成になってて、
頭から写経しては実行、写経しては実行しているところ。

そうそう。これなんだよな。GUI用ツールキットtkinter
をオブジェクト指向的に使うとなると、どんな風にTk.Frame
を継承して、どんな風にコードに書いていけばいいのか、
なんてところがしっかり書いてあったりして、まさに
しりたかったところ。

写経といっても、呪文を唱えたいのではなく、コードを
書きたいのだ。
(まぁ、細かい説明とか足りない部分もあるので、その辺
は検索しつつ。たとえば、master=Noneのパラメタは具体的
になんなの?とか説明が足りない)

https://ameblo.jp/hitochan007/entry-12011647586.html
https://qiita.com/suzuki-no-suke/items/75984e6a8225bc57fe99

このあたりかな。

というわけで、とりあえずこのpdfをちゃんとひととおり
写経してみよう。

ちなみに、Python2時代の資料なので、写経するには
頭の中でPython3に読み替えたりする必要があったり、
アポストロフィーがなにやら別のコードの文字が
使われていたりして、コピペするとエラーが出て嵌る
ので、その辺は注意が必要。





https://togetter.com/li/1309782

ベビーカー。

https://twitter.com/kugatakamiti/status/1085885470276489216

川口駅。




https://twitter.com/ByNEET/status/1082282181517488128/photo/1

このフォント、サイバー感あってかっちょいいな。





https://www.asahi.com/articles/ASM1J2JHFM1JUBNB001.html

これでいいのだ。




ふとaliexで物色。こないだのダイヤモンド富士のとき
に、つくづく思ったんだけど、200mmを単体で使うなら、
MFでも自分の手と目を信じてピントを追い込んでいける
けど、テレコン使うと途端にばくちになっちゃう。
目で見てあってるように見えても、実際には少しピント
ずれちゃうときがあったり。

で、どっちかって言うと、ピントリングの操作が、AF
レンズ用で回転角が小さいから、手の操作の方で支障
があるんだろうと。
200mmのMFレンズ+テレコンならまぁちょっとはまし
になるんだろうけど、なら、それ以前にテレコン使わず
500~600mmくらいのレンズがあればいいんじゃね?と。

で、探していたら、aliexに行き着いて、色々物色して
いた次第。

https://ja.aliexpress.com/item/500-F-6-3-T2-A6300/32908000037.html

https://ja.aliexpress.com/item/500-f-8-0-t2/32864895927.html

ミラーレンズ、aliexでこんなに出回ってたのか。
へぇ、知らなかった。中華レンズ(しかもミラーレンズ)
って、どうなんだろうねぇ?写りの具合は…

韓国のサムヤンレンズは比較的悪いうわさは聞かないん
だけど(といってもAFはあまりなくて、大部分MF)、
中華製レンズの評判は聞いたことないんだよな。

http://camera.itmedia.co.jp/dc/articles/1510/14/news081.html

そういえば、中一光学は、以前ライカマウントの
オリジナル機を日本人の人が開発して、レンズは
中一光学に依頼して…っていう話があったよな。
たしかここの技術力は結構なものだったらしいと
記憶してる。

それ以外はよくわからないな。

https://kobefinder.com/yongnuoneewerlens/

悪くは無さそうだけど、B級感はぬぐえない感じは
ある。まぁ、値段の割りにお得かな、ぐらいか。

まぁ、普通のレンズであれば、開放で甘い感じとか
なら、絞ればそれなりに使えたりするかもしれない
んだけど、ミラーレンズは絞れないからな。構造的
に。開放F値=最大絞りでもある。

人柱情報が欲しいんだけど、まだ見つからず…。


一方、APS-Cで使える超広角はないかなぁ?とか思って
色々物色してたんだけど、とりあえず見つけたのは
ワイコンだな。

https://ja.aliexpress.com/item/0-45-37-43-46-49-52-Hd/32908115412.html
https://ja.aliexpress.com/item/Free-shipping-52mm-0-45X-Professional-Super-Wide-Angle-Macro-Conversion-Lens-52-0-45X-For/32316316085.html

この辺の、0.45倍テレコン使えば、お蔵入りになってる
18~55mmのDAレンズに使えば、超広角にはなるだろう。
ただ、ワイコンはひずみ(たる型収差、糸巻き収差や
その複合)がひどかったり、周辺で像が流れちゃったり
しやすいから、実用レベルになるかどうかが判らん
のよねぇ。

どっちかっていうと、この手のワイコンと同じくらいの
口径の2倍テレコンあたりを2個手に入れたら、ワイドビノ
として使えないかなぁ?とか妄想。安いから、お試し
してみるのはいいんだけど、2個のテレコンを双眼鏡型
に纏めるのに、やっぱ3Dプリンタは欲しいんだよな。

https://ja.aliexpress.com/item/2-0-37-43-52-55-49/32908075503.html

この37mmって、レンズのフィルタリング径かなぁ?
レンズ本体自体は、どれも同じものなのかな?
口径が63mmとかあると、2個並べると目の間隔より
広くなっちゃいそうだな。

https://ja.aliexpress.com/item/Pixco-30mm-2-0X-Magnification-Telephoto-Tele-Converter-Lens-suit-For-Camera-Silver-with-Lens-wrist/32810252454.html

これは、レンズリング径が43mmらしい。ぎりぎりokかな。

なんか、レンズ眺めると妄想が尽きないな。



コメント ( 0 )



« 前ページ 次ページ »