「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ
CALENDAR
2019年1月
日
月
火
水
木
金
土
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
前月
翌月
Entry Archive
2024年08月
2024年07月
2024年06月
2024年05月
2024年04月
2024年03月
2024年02月
2024年01月
2023年12月
2023年11月
2023年10月
2023年09月
2023年08月
2023年07月
2023年06月
2023年05月
2023年04月
2023年03月
2023年02月
2023年01月
2022年12月
2022年11月
2022年10月
2022年09月
2022年08月
2022年07月
2022年06月
2022年05月
2022年04月
2022年03月
2022年02月
2022年01月
2021年12月
2021年11月
2021年10月
2021年09月
2021年08月
2021年07月
2021年06月
2021年05月
2021年04月
2021年03月
2021年02月
2021年01月
2020年12月
2020年11月
2020年10月
2020年09月
2020年08月
2020年07月
2020年06月
2020年05月
2020年04月
2020年03月
2020年02月
2020年01月
2019年12月
2019年11月
2019年10月
2019年09月
2019年08月
2019年07月
2019年06月
2019年05月
2019年04月
2019年03月
2019年02月
2019年01月
2018年12月
2018年11月
2018年10月
2018年09月
2018年08月
2018年07月
2018年06月
2018年05月
2018年04月
2018年03月
2018年02月
2018年01月
2017年12月
2017年11月
2017年10月
2017年09月
2017年08月
2017年07月
2017年06月
2017年05月
2017年04月
2017年03月
2017年02月
2017年01月
2016年12月
2016年11月
2016年10月
2016年09月
2016年08月
2016年07月
2016年06月
2016年05月
2016年04月
2016年03月
2016年02月
2016年01月
2015年12月
2015年11月
2015年10月
2015年09月
2015年08月
2015年07月
2015年06月
2015年05月
2015年04月
2015年03月
2015年02月
2015年01月
2014年12月
2014年11月
2014年10月
2014年09月
2014年08月
2014年07月
2014年06月
2014年05月
2014年04月
2014年03月
2014年02月
2014年01月
2013年12月
2013年11月
2013年10月
2013年09月
2013年08月
2013年07月
2013年06月
2013年05月
2013年04月
2013年03月
2013年02月
2013年01月
2012年12月
2012年11月
2012年10月
2012年09月
2012年08月
2012年07月
2012年06月
2012年05月
2012年04月
2012年03月
2012年02月
2012年01月
2011年12月
2011年11月
2011年10月
2011年09月
2011年08月
2011年07月
2011年06月
2011年05月
2011年04月
2011年03月
2011年02月
2011年01月
2010年12月
2010年11月
2010年10月
2010年09月
2010年08月
2010年07月
2010年06月
2010年05月
2010年04月
2010年03月
2010年02月
2010年01月
2009年12月
2009年11月
2009年10月
2009年09月
2009年08月
2009年07月
2009年06月
2009年05月
2009年04月
2009年03月
2009年02月
2009年01月
2008年12月
2008年11月
2008年10月
2008年09月
2008年08月
2008年07月
2008年06月
2008年05月
2008年04月
2008年03月
2008年02月
2008年01月
2007年12月
2007年11月
Recent Entry
こないだのロボット
潮来に行ってきた
ロボット行ってきた
88の日
帰って来た
こないだのロボットと、Windows11セットアップ
ロボット行ってきた
PC買い足した
ネオクラシックカー
TkEasyGUI
Recent Comment
nekosan/
JYRUSSやってきたメモ
フルタニアン/
JYRUSSやってきたメモ
nekosan/
JYRUSSやってきたメモ
フルタニアン/
JYRUSSやってきたメモ
nekosan/
こないだのロボット
フルタニアン/
こないだのロボット
nekosan/
こないだのロボット
フルタニアン/
こないだのロボット
nekosan0/
レジ袋ホルダーを考える
フルタニアン/
レジ袋ホルダーを考える
Category
ノンジャンル
(2840)
PIC
(47)
AVR
(341)
Arduino
(446)
Raspberry Pi
(193)
mbed
(41)
ARM
(30)
ESP32
(15)
Android
(10)
OPアンプ
(125)
VHDL
(57)
PSoC
(4)
アナログ回路
(110)
クルマ
(126)
rails
(51)
本
(42)
導電塗料
(3)
Fritzing
(41)
Edison
(2)
FFT
(34)
写真
(157)
MIDI
(24)
その他日記
(11)
Python
(57)
3Dプリンタ
(124)
Bookmark
最初はgoo
goo blogトップ
スタッフブログ
My Profile
ブログID
nekosan0
自己紹介
Search
このブログ内で
ウェブ全て
メインロジックが出来た
Python
/
2019年01月12日
Python3、tkinter、Pillow使って年末からゴニョゴニョと
やっていた、画像処理するGUIツールのメインロジックが
ようやく動くようになった。
何をやってるのかを簡単に纏めなおすと、ブギーボード
みたいなやつをaliexで買って、メモとか計算とかで
結構便利に使えていい買い物だったんだけど、保存機能
が根本的に欠落しているのをナントカしたい、と。
液晶を利用しているデバイスなんだけど、デジタル機器
ではないので、直接PCと接続したりして、画像(や文字)
を保存しておくことができない。
なので、デジカメとかで撮影して、それをPCに残しておく
くらいしかないんだけど、書いた(描いた)ものは
そのままではちょっとみづらい。
なので、二値化して見やすく加工してから残しておきい。
ても、この液晶のコントラストが結構低いので、レタッチ
ソフトとかで単純な二値化をすると、まともに図柄を
抽出できなくて、それなりの画像処理が必要になって
しまうというもの。この課題をクリアしたいと。
実験用の画像サンプルとして使っているのが、
これ。
ごらんのとおり、写真に撮るとコントラストが低くて、
正直見づらい。しかも、右上はライトが当たっていて
明るい一方、左下はライトが暗くて図柄の線も微か。
人の目には、これでもちゃんと「図」と「地」の違いが
見分けられるんだけど、CPU君はこれをどうやったら
上手い事区別できるのか。
で、試行錯誤した結果、とりあえず力技のロジックで
こないだやってみたのがこれ。
元画像から、結構くっきり抽出できていると思うんだ
けど、問題はこれ1枚(640×480ほど)を処理するのに
2~3分かかっちゃう。そんな遅いとまともに使えない。
計算処理をもうちょっと工夫して、実用に耐える速度を
出そうというのが、ここのところの課題だったわけ。
で、あれこれ考えながらロジックを弄りなおしていたん
だけど、ようやく一通りまとまって、実行できる状態に
なったので、動かしてみた。
出てきた画像が、まずこれ。
なんだこれ?バグった。
pdb使って計算途中の変数をながめてみる…
計算結果をストックしている変数に、まともに値が
入ってない(というか、全部ゼロ)というのがあって、
どうやら、初期化する関数を呼び出してなかった
みたいな。そのあたりをゴニョゴニョなおす。
こんな風になっちゃった…
なんだろう?と思って、pdbで途中で止めて、ワーク
変数の中身をダンプ。
どうやら、ドットの輝度の平均値を計算しているところ
で、平均値がマイナスになってしまっているところがある。
うーーーん。
光が吸収されてしまっている。どうやら、オイラはうっかり
ブラックホールを作り出してしまったようだ。
地上にブラックホールはまずいので、事故が起きないうちに
こっそりバグを直す。
ようやく、こんな具合に、抽出できた。さっきの長時間
かかるロジックの結果と比べて、微小な部分でドット単位
の差異はあるんだけど、見てのとおり、ほぼ同じ結果が
得られた。
ちなみに処理時間は、全体で約10秒くらい。予定通り2桁
ほど速くはなったんだけど、なんでこの程度の処理が
秒単位で掛かっちゃうんだろうなぁ?そんなに重い処理
では無いんだけどな…と思って、考え直す。
多分、処理ロジック自体は相当まともなんだけど、よく
考えてみたら、これを動かしているVirtualBox上の
Lubuntuって、仮想環境だから処理能力が低いんだよな…
と。
以前、仮想環境の処理能力をUnixBench掛けてみた結果を
見直してみる。
https://brown.ap.teacup.com/nekosan0/3493.html
初代のRaspberry Piくらいの能力しかないことがわかる。
UnixBenchを、古いLet's Note(CF-T9)のネイティブ環境
で実行してみた結果は、これよりも1桁速い値が出てきてた。
このLet's NoteのCPUをPassMarkで見てみると、
https://www.cpubenchmark.net/cpu.php?cpu=Intel+Core2+Duo+U9600+%40+1.60GHz&id=1020
1000ちょっとで、UnixBenchと同じくらいの数値になってる。
まぁ、PassMarkはCPU単体のベンチで、UnixBenchはディスク
I/Oとか色々なものまで含めたベンチなので、一概に比較は
出来ないものの、大体同じくらいの指標と仮定してみる。
なので、今回使った仮想環境と、メインで使ってるPCの
処理能力とで比較すると、およそ30倍くらいの処理能力差が
ありそう。
ってことで、仮想環境で10秒くらい掛かるなら、メインPC
使えば0.3秒で終わるんじゃないかな?と。まぁ、実際は
そこまで速くはならないだろうけど、1秒は掛からない
だろう。
このロジックのまま、Androidに移植しても、1秒前後で
処理が完了するんじゃないかな。
あと、もっとデカい画像で処理しても、実用時間内で
処理が完了できるだろうと。
とりあえず、まだ仮実装になってる部分とか、GUI操作
の使い勝手とか、その辺を改めて実装していこう。
で、出来ればtkinterでタブ表示したいよなぁ、とか思って
ちょっと調べてみた。
https://qiita.com/yusk24/items/3af56d0599be200559de
https://torina.top/detail/413/
https://qiita.com/fiftystorm36/items/96014a13b09777925055
どうやら、tkinterのnotebookっていうウィジェット?
(コンテナ?)を使うか、力技で押し込むか、どっちか
ってことになりそうかな。
ちなみに、画像処理のロジック内容の作戦はこう。
あるドットの周囲の平均値を求めておいて、その値とその
ドットの輝度を比較して、明るければ「図」、暗ければ
「地」として把握しようっていう作戦。
ただし、単純にそういう処理をすると、たとえば以前も
触れたこんな画像の場合、
こんな風に、暗い部分については微小なノイズを拾って
どうでもいい模様を拾い上げてしまう。
なので、「地」の部分の場合は、その地の明るさを加味
させて、要らない模様を抽出しないようにする必要が。
それと、逆に、塗りつぶししたところは、周囲も明るい
ので、こんな風に塗られていないものとして扱われて
しまう。
こんなふうに、四角に塗りつぶした内側が黒くなって
しまう。
なので、四角く塗りつぶしたところも、ちゃんと塗り
つぶされているように、ちゃんと補正するロジックが
考慮されてはいる。(いろんな条件で撮影された写真
でもちゃんと動作するように、固定値とかマジック
ナンバーとかで処理しないように工夫している)
あとは精度だな。まだ気になるところはあるものの、
実用範囲で妥協しつつ、できればこれ以外の画像にも
適用できるようにしたいところ。
https://twitter.com/ryogomatsumaru/status/1082258614008537088
面積の問題。
結構考えてみて、解けた。なかなか面白い問題だな。
(時間掛かった)
https://clicccar.com/2019/01/09/676188/
FD-3Sをアメリカの富豪がチューンしたら。
NAの3ローター、なかなか魅力的だな。
https://twitter.com/Count_Down_000/status/986068984922386432
オイラはココロが汚れているようだ。
https://twitter.com/AkibaEvangelist/status/1082992223484968960
メラミンスポンジ。へぇ。それは便利だな。
https://www.fnn.jp/posts/00410520HDK
国際法が守れない国とはお付き合いできないんじゃないか
なぁ。
一旦距離置いたらいいと思うんだけどな。
コメント (
0
)
goo ブログ
ブログの作成・編集
gooおすすめリンク
おすすめブログ
【コメント募集中】スタッフの気になったニュース
@goo_blog
【お知らせ】
ブログを読むだけ。毎月の訪問日数に応じてポイント進呈
【コメント募集中】goo blogスタッフの気になったニュース
gooブロガーの今日のひとこと
訪問者数に応じてdポイント最大1,000pt当たる!