「PIC AVR 工作室」サイトの日記的なブログです。
サイトに挙げなかった他愛ないことを日記的に書き残してます。
PIC AVR 工作室 ブログ
CALENDAR
2018年12月
日
月
火
水
木
金
土
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年11月
2024年10月
2024年09月
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
こないだのロボット
ロボット行ってきた
こないだのくれじークライマー全国大会2024予選
マウス修理した
訃報
ミカド行ってきた
LANケーブル交換した
MFT2024行ってきた
こないだのロボット
ロボット行ってきた
Recent Comment
nekosan/
JYRUSSやってきたメモ
フルタニアン/
JYRUSSやってきたメモ
nekosan/
JYRUSSやってきたメモ
フルタニアン/
JYRUSSやってきたメモ
nekosan/
こないだのロボット
フルタニアン/
こないだのロボット
nekosan/
こないだのロボット
フルタニアン/
こないだのロボット
nekosan0/
レジ袋ホルダーを考える
フルタニアン/
レジ袋ホルダーを考える
Category
ノンジャンル
(2850)
PIC
(47)
AVR
(341)
Arduino
(446)
Raspberry Pi
(193)
mbed
(41)
ARM
(30)
ESP32
(15)
Android
(10)
OPアンプ
(125)
VHDL
(57)
PSoC
(4)
アナログ回路
(110)
クルマ
(127)
rails
(51)
本
(42)
導電塗料
(3)
Fritzing
(41)
Edison
(2)
FFT
(34)
写真
(158)
MIDI
(24)
その他日記
(11)
Python
(57)
3Dプリンタ
(124)
Bookmark
最初はgoo
goo blogトップ
スタッフブログ
My Profile
ブログID
nekosan0
自己紹介
Search
このブログ内で
ウェブ全て
Python3、Pillow、tkinterの画像処理の進捗
Python
/
2018年12月21日
断片的にメモ残している、Python3、Pillow、tkinter
を使った画像処理について、計算方法の考え方自体は
なかなかいいところまで行ったので、現時点までの
ゴニョゴニョをちょっと纏めておくことに。
発端は、aliexで買ったブギーボードみたいなやつ、便利
なんだけど、PCに見やすい画像で保存しておきたいよな、
と思ったことから。
書くときに電気食わないし、消すときにも電気ちょっと
しか食わないし、便利なんだけど、PCにデータとして残す
機能が無い。デジカメとかで撮っておけばいいんだけど、
コントラストが薄くて見づらいし、紙に刷りだして沢山
刷りだすとしても、元画像そのままだと見づらい。
で、なんとかきれいに二値化できないかな?と思ったわけ。
で、なんとなく思いついたロジックだと、完璧じゃないに
しても、そこそこ文字や画像を浮き上がらすことは可能な
はず。ただし、処理時間が超長くなりそうで心肺だな、と。
サンプル画像。処理時間をそこそこ短くするために、ひとまず
640×480ぐらいの小さいものを使ってみる。
こんな風に、コントラストが結構小さくて、もともと
見づらいんだよな。
ちなみに、この画像を、レタッチソフトとか使って単純な
二値化をしてみると、こんな具合。
ライトが差している右上は白っぽく明るくなってて、
左下は逆に暗くなっている。
なので、二値化の弁別値を弄るだけだと、こんな具合に
右上が白く飛んで、左下は黒くつぶれてしまうわけ。
同じ事を、普通のデジカメ画像でも行ってみる。
こないだも挙げたネコ写真だと…
こうなる。クロネコだ。
まぁ、ネコの写真はともかく、ブギーボードもどきに
書いた(描いた)文字や絵が、黒い地からきれいに分離
できる画像処理方法をいろいろ模索してみた。
ざっくりした計算処理内容を纏めると、あるドットの
周辺の平均値を求めて、その平均値よりも明るければ
明るい点に、暗ければ黒として描けば、周辺ドットとの
比較によってきれいに文字や絵が浮き上がるはずだろう、
と。
というわけで、愚直に処理ロジックに落とし込んで実行
してみたのが、こないだまでのお話。
なんといっても、Python3用のメジャーな画像処理用
ライブラリPillowを使って、ドットの明るさの平均値を
取ったり、それを新しい画像データに描きこんで行く
ための、getpixel、putpixelがものすごく遅いって
ところが大問題。こないだも書いたけど、
https://brown.ap.teacup.com/nekosan0/3779.html
640×480程度の画像をドットtoドットでコピーするだけ
でも、4秒も掛かっちゃう。
これだけ遅いとなると、周囲の平均値を取って比較する
処理を入れたら、二桁遅い時間が掛かるだろうと思って、
いろいろ考えてみた結果、とりあえず配列(Pythonだと
リスト形式)のデータに一旦変換しちゃえば、getpixel、
putpixelよりも速いだろうと。
で、試してみたら…そんな劇的には速くならなかった。
まぁ、速くならないのはひとまず仕方ないとして、高速化
の工夫は後回しとして、CPU時間をゴリゴリに掛けてでも
一連の処理を実行して、結果の画像を眺めてみたい。
プログラムに愚直にロジックを落とし込んで行ってみる。
ある1ドットについて、その周辺の縦横21ドットずつ
(合計441ドット)の平均値を求めて、その平均値より
明るければ緑、暗ければ黒としてドットを打ってみたのが
これ。
まぁ、想像通り、文字や図が浮き出てきた。画像が640×480
と粗いので、みづらいけれど、まぁなんとか文字や図は
ちゃんと読み取れる。
けど、見てのとおり、文字や図が書かれているところから
ちょっと離れたところ(何も書かれていない真っ黒なところ)
は、微小なノイズを拾って、妙な模様が出てきちゃう。
ちなみに、ネコの写真をやってみると、
こんな風に、薄暗い部分ですら、ネコの毛の模様が判る
程度に浮き上がらせてくるのが面白いところ。ピントが
外れている芝生の部分はモヤモヤした模様になって出て
きた。
現時点の問題は、この画像処理1枚行うのに、なんと
15分近く掛かっちゃう。
平均値の計算を愚直に行っているので、計算量が無駄に
多いのが原因。FFTの計算みたいに、これをもっと減らす
必要がありそう。まぁ、高速化はまた後の課題に。
その前に、文字や絵が描かれていない黒い部分に載っちゃう
モヤモヤノイズをナントカしたい。
というわけで、黒い部分に注目して、その辺の計算をちょっと
加えてみたのがこれ。
うん。まぁ、狙った感じになった。さっきの
元画像と比べてみると、こんな具合。うん。
ただ、今はまだ少しマジックナンバーをプログラム中で
使ってるので、その辺をたいていの画像でも自動計算
できるように変えていく必要がある。そのロジックは
もう考えてあるので、あとはその辺の処理を足しこんで
いけばokなはず。
あと、現時点のプログラムだと、広い面積を塗りつぶし
した場合に、(平均値が高くなっちゃうので)その中央部分
が黒く沈んでしまう恐れがある。なので、その辺についても
手を当てないといけない事はわかっていて、その対策も一応
考えてある。
その辺の考え方をさらにプログラムに追加すれば、計算方法
の内容としては完成っぽいんだよな。
そしたら、高速化を計ろう。
というのが、現時点までの進捗。
https://www.youtube.com/watch?v=4u5O3Ri1Dfc&t=32m20s
ゆいちゃんの、「乾きやすい」マークの顔真似。
https://www.youtube.com/watch?v=C0ZXOWa9LS0
Landing High Japanって、なんだ?
これ知らなかったな。こんなゲームあったのか。
Midnight landing、Top Landing、Landing Gearは
散々やったけど、これ全然しらなかったよ。
https://kuruma-news.jp/post/120299
ロービームでも、対向車のライトがまぶしい理由。
なんか、釈然としないけど、まぶしいものはやっぱり
まぶしいとは感じる。
なんとかならないものかなぁ?
https://twitter.com/shapoco/status/1075397780363825152
電解コンのマステ。
欲しいな、これ。
コメント (
0
)
goo ブログ
ブログの作成・編集
gooおすすめリンク
おすすめブログ
【コメント募集中】スタッフの気になったニュース
@goo_blog
【お知らせ】
ブログを読むだけ。毎月の訪問日数に応じてポイント進呈
【コメント募集中】goo blogスタッフの気になったニュース
gooブロガーの今日のひとこと
訪問者数に応じてdポイント最大1,000pt当たる!