Ψ(`∀´)Ψケケケ と (´・ω・`)ショボーン

AviUtl用のスクリプト配布やBlender、自作PCのパーツやガジェットの情報を配信中

 

【Lua】ラベリング処理の補正処理でハマる……泣【アルゴリズム】

Edit Category Aviutl > スクリプト(配布物や制御法関係)

20170228053055

ラベリング処理のルックアップテーブル(LookUp Table)の処理にハマる……。ちなみにハマるとはいっても、熱中の意味ではなくドツボのほう。まあ、どうにかしようと時間を費やしているのだから熱中という意味も多少はあるかもしれない。

しかし、簡単な?画像のラベリングまではできたのだけど、複雑な実写等になると、単純な処理しかさせていないためにルックアップテーブルによる補正が上手くいかない。素直にOpenCvの借りたほうが楽そうだけど、自力で書きたい。

 

ちなみにラベリング処理とは、画像の画素を解析していって、領域ごとにラベルを貼り付ける処理のこと。上の画像であれば、黒い部分が閾値以下の部分で非表示、それ以外の繋がっている領域ごとにラベリングされていて、同じ領域と処理された部分が同じ色で表示されている。

それで何ができるのかというと、色分けができたり、ラベル番号を指定してやって特定の番号、特定の範囲にあるラベル番号だけを表示させたり非表示にさせたり、効果をかけたり重心を見つけたり、座標を取得したり……と色々とできるようになる

 

ちなみに上の画像に関して言えば一見、上手く行っているように見えるけれど、よく見ると上手く行っていない部分があるのがわかる。画像中央下部の紫の領域と左側にある薄い黄色の一部が繋がっているにも関わらず、別の領域と判定されてしまっている。

原因はたぶん『√』っぽい部分の領域の処理(繋がりが欠けている)。あるいは、ルックアップテーブルの補正処理の仕方なんだけど、なんとも悩ましい。

まあ、コード自体はまだ試作ということで、Lua言語でスクリプトとして書いているので処理が重い。常用するならC言語でDLLにする必要もあるので、配布という形でここに来てくれている方にお目見えするのはまだまだ先になるはず……。


ラベリング処理の習熟(進行)具合

20170228052458

↓ ↓ ↓

20170228052434

上の方の画像は、Scene1に配置した図形オブジェクト(円)に、さつきさんのランダム配置を追加し、Scene1にアルファチャンネルを設定したシーンオブジェクト。これにラベリングを施したのが下の方の画像。

左上からラスタスキャンしているので、より上にあり、より左にある図形ほどラベル番号が若くなる。(ただ、くっついていなくても、一部は同じ領域と判定されているものもある。※)

※ 円の輪郭を滑らかに見せるために厳密に言えば、輪郭部分は100% → 0%の透明度が設定されている。最初、この部分を忘れていて、何故、くっついていない円と円が同じ領域にラベリングされるのか(・ω・ )モニュ?とした……。

 

とりあえずはこの程度の画像ならギリギリ……といった感じ。この不完全なラベリング処理でやっていることは……

  1. 画素のない部分を、ラベル番号0として初期化する。
  2. 画素があったらその位置を起点として4方向(左上、上、右上、左)を検索。
  3. 4方向にラベルの貼られた画素がなければ新たにラベルを振る。
  4. 4方向に既にラベルの貼られた画素があったら、4方向のうちで最も小さいラベル番号を引き継ぎ、それぞれの現在のラベル番号に対応したルックアップテーブル、検索先の画素のラベル番号と比較して、小さい方のラベル番号を残す。※
  5. 現在の画素に引き継いだラベル番号を記録する。
  6. 1から5までを画像の最後まで繰り返し。
  7. 画像の最初から割り振ったラベル番号と、ルックアップテーブルの同じ番号を比較して同じ番号のルックアップテーブルに入っているラベル番号を画素に入れる。※
  8. ラベル番号を適当に色相に変換して、obj.putpixelで描画してやる。
  9. 7から8までを画像の最後まで繰り返し。
  10. 終了。

 

※ 3と4の部分はラベル番号の割り振りで、記録のの精度を高めるとしたらココ。苦手な処理(隣接する領域が繋がらない部分)をどうにかするために、何らかの処理を追加するべきか?

※ 7がルックアップテーブルの補正部分。番号を整えたり入れ子でループさせたり、恐らくは他にも色々と補正処理をさせて精度を高める……はず。

関連記事
スポンサーサイト
Community テーマ - プログラミング  ジャンル - コンピュータ

Newer Entry【AviUtl】スクリーンセーバーのように動く『連結線』を配布済みの背景Sin波に追加!【Script】

Older Entry【改善】悩みの種だったWDのHDDの低速病が治った?ので、その方法を覚書【低速病】

Comments


Trackbacks

 
06 2017
SUN MON TUE WED THU FRI SAT
- - - - 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 -

05 07


 
 
PLAY ARTS改 BATMAN™: ARKHAM KNIGHT バットマン™
PLAY ARTS改 BATMAN™: ARKHAM KNIGHT バットマン™ PVC製 塗装済み可動フィギュア
 
注意事項

紹介されているフリーソフト、スクリプトをインストールするときは、フリーソフトの説明および注意事項を熟読し、自己責任においてご利用下さい。



記事:Amazonギフト券の期限など
特価情報:各ジャンル・タイムセール

 
ワンパンマン 戦慄のタツマキ 1/8スケール PVC製 塗装済み完成品フィギュア
 
配布中のAviUtl用のZIPがDLできない件
どうもzipを置いていたサイトを単なるファイル置き場にしてしまったのが悪かったようで、直接ブログからダウンロードできなくなってしまったようです。 ファイルを保存していた『ultramarinepig.web.fc2.com』の

トップページ(リンク)

に各DLLへのリンクを貼ったリストを作りましたので、ブログのDLの項目からダウンロードできない場合はそちらからダウンロードしてください。

ファイル名はブログのDLリンクに表示されるものと同じですので、それを選択してもらえれば……お手数ですが、よろしくお願いします。m(_ _)m
 
オススメ
















 
 
人気記事
 
 
ブログ内検索
記事を探すときは、キーワードで検索をかけると速くて便利です。
 
 
 
ブログ内検索
記事を探すときは、キーワードで検索をかけると速くて便利です。
 
 
動画編集・3DCG向け自作PC構成2017夏(Ryzen R7 第一世代)
8コア16スレッドのAMD Ryzen R7 1700で組むコスパの良い自作PC。

注意点としては現在発売されているRyzenはAPUではなくCPUなので、GPUが必須であること。また、CPUクーラーはAM4(Ryzenの規格)に未対応のものがある(下記のH60はOK)ため、メーカーの公式サイトで対応状況を要確認。

現在、未対応でもオプションのプラケットが発売されることもあるようなので、今使っているCPUクーラーが使えないとは限らないことも留意。

(AM4 Ryzen対応)



記事:CPUの『殻割り』に使うグリスの候補【OC 殻割り】



 
オススメのフリーソフト
ブラウザ(お好みで。複数可)
Firefox
Opera
Sleipnir
ファイアウォール(必須)
Comodo Internet Security
ZoneAlarm
Outpost Security Suite FREE
アンチウィルスソフト(必須)
avast! 4 Home Edition
avira 無料版
AVG Anti-Virus Free Edition
レジストリ保護&クリーナー(必須)
Spybot-S&D
CCleaner
圧縮・解凍ソフト(必須)
Lhaplus
7-Zip
オフィスソフト
OpenOffice.org
LibreOffice
TeraPad
メーラー
Thunderbird
オンライン・コミュニケーション・ツール
Open Live Writer
Skype
Windows Live メッセンジャー / MSN メッセンジャー
Backup & PartitionEditor
EaseUS Todo Backup Free
EaseUS Partition Master
コーデックパック(どちらか)
K-Lite Codec Pack
 
Combined Community Codec Pack
各エンコーダ&デコーダ、スプリッタ(競合注意)
ffdshow
Xvid Codec
qaac Codec
x264vfw
Haali Media Splitter
LAV Splitter
webm
Google VP8 Video For Windows codec
動画音楽再生プレーヤー(複数可)
MPC Home Cinema
GOM PLAYER
SMPlayer
VLC media player
動画加工編集ソフト
Windows ムービー メーカー
Windows Media エンコーダ
MP4Cam2AVI
Any Video Converter フリー版
CamStudio
SEffect
x264vfw
AviUtl
AviUtlのプラグイン
MediaCoder
Nero AAC Codec
Avidemux.org
真空波動研 Lite
えこでこツール
XMedia Recode
グラフィックソフト
Blender
Inkscape
GIMP
PlayMemories Home
FireAlpaca
HTML&ブログ制作
ez-HTML
Windows Live Writer
FFFTP
WinShot
Aptana | Studio
AviUtl
AviUtlの基礎構成ファイルDL
その他、色々と……
DataRecovery
CPU-Z
CrystalDiskMark
CrystalDiskInfo
 
 
QRコード
QRコード
 
プロフィール

Ψ(`∀´)Ψケケケ

Author:Ψ(`∀´)Ψケケケ
現在はAviUtl用の駄スクリプトを書いて配布中。使用は自己責任でお願いします。

 
 


ARCHIVE RSS