ロヌカルバむナリパタヌンLBP画像蚘述子ずバリ゚ヌションの抂芁

こんにちは、ハブロフスクの䜏民。 コンピュヌタビゞョンず画像凊理に興味のあるプログラマを猫に招埅したす。 おそらく、テクスチャの䜎レベルの説明ず、機械孊習アルゎリズムの属性の蚭定のためのシンプルだが効果的な数孊ツヌルを芋逃しおいるかもしれたせん。



はじめに



LBPのトピックはすでにHabréで取り䞊げられおいたすが、提案された説明を少し広げお、このパタヌンのいく぀かのバリ゚ヌションを共有するこずにしたした。



ご存じのように、コンピュヌタヌむメヌゞは同じ数倀情報です。 各ピクセルは、癜黒画像の堎合は数字で衚され、色の堎合は数字のトリプルで衚されたす。 䞀般に、それらは人間の目にずっお玠晎らしい画像を構成し、それらを倉換するこずは䟿利ですが、倚くの堎合、情報が倚すぎたす。 たずえば、オブゞェクト認識の問題では、各ピクセルの倀に個別に関心を持぀こずはめったにありたせん画像は倚くの堎合ノむズが倚く、目的の画像はさたざたな方法で提瀺できるため、アルゎリズムぱラヌ、䞀般的な傟向をキャプチャする胜力に耐性があるこずが望たしいです。 このプロパティは、英語の゜ヌスの堅牢性堅牢性ず呌ばれたす。



この問題に察凊する1぀の方法は、画像を前凊理し、重芁なポむントのみを残し、次のアルゎリズムをそれらに適甚するこずです。 このために、SIFT、SURF、および他のDAISY、機胜蚘述子が発明されたした。 圌らの助けを借りお、写真を぀なぎ、オブゞェクトをマップし、倚くの䟿利なこずを行うこずができたすが、これらの蚘述子には欠点がありたす。 特に、発芋されたポむントは、ある意味で、真に特別でナニヌクであり、画像から画像ぞず再珟されるこずが期埅されたす。 SIFTを䜿甚しお、この画像の半分がレンガの壁であるこずを理解しないでください。







たた、これらの蚘述子はロヌカルず呌ばれたすが、それでも画像のかなり重芁な領域を䜿甚したす。 これは蚈算コストの芳点からは良くありたせん。 この䜍眮を少し緩めたしょう。 さらに小さな構造を考慮しお、画像を特城付けるこずができるでしょうか



䞻なアむデア



繰り返したすが、画像の構造を蚘述する方法を取埗したいず思いたす。

  1. すぐに考慮
  2. 順序を保持する茝床倉換䞋で䞍倉 
  3. 耐ノむズ性
  4. テクスチャのばら぀きに匷い
  5. タスクの次元を倧幅に瞮小したす


ロヌカルバむナリパタヌンずは䜕ですか 芁するに、これは各ピクセルが茝床が枛少する方向を蚘述する方法です。 構築するのは難しくありたせん。 やっおみたしょう。















ちょっず埅っおください、それは単なる2進数です Local Binary PatternTimo Ojala、2002幎7月を巧劙な蚀葉ず呌びたす。 数孊の芳点からは、次のようになりたす。



ここで、sは関数ステップxステップであり、次の堎合に0を返したす。 x>0 そしお、1 x<0 。 g0、1\ドット7 ピクセルの番号付き近傍の茝床倀であり、 gc -最も䞭倮のピクセルの茝床倀。



以䞊です。 より数孊的に粟通した読者は、蚘述子ビットを方向の茝床埮分の兆候ず呌びたすが、これは原理的ではありたせん。 芁件1-2が簡単に満たされおいるこずは明らかです。 3、おそらく、改善が必芁です。これに぀いおは少し埌で説明したす。 しかし、4で䜕をすべきか これをどのように䜿甚するかはただ明確ではありたせん。 はい、そしおタスクの寞法をかなり小さくしたした。ピクセルの茝床倀のバむトの代わりに、方向の茝床倉化の兆候のバむトを埗たした。 アフィン倉換には䞍倉性はありたせんが、それを必芁ずしたせんでした。最終的に、正方圢ず菱圢のパタヌンは2぀の異なるパタヌンです。



取埗したデヌタから、すでに䜕か興味深いものを抜出するこずができたす。それらを実践する方法をすぐに芋おみたしょう。これに基づいお、それらを改善する方法を考えたす。



OK、LBPを数えるこずを孊びたした。 次は



テクスチャ䜜業が進行䞭の堎所でLBPを䜿甚したす。 最も䞀般的なオプションテクスチャはプログラムぞの入力であり、その前にあるテクスチャを決定したす。 これは、ステップの1぀、たたはより耇雑なアルゎリズムの補助になりたす。 たずえば、特定の圢状ではなく、特定の構造火、煙、たたは葉のみを持぀オブゞェクトの画像の認識アルゎリズムHongda Tian、2011。 代替方法画像をセグメント化するずきにLBPを䜿甚しお、シマりマ䞊のすべおのストリップを䞀意のオブゞェクトずしおではなく、シマりマ党䜓ずしお考慮するようにマシンに指瀺したす。 朚の埌ろの森をご芧ください。



これがどのように発生するかは、タスクず遞択したLBPのタむプによっお異なりたす。 写真のLBPから繰り返しパタヌンを探すこずは必ずしも意味がありたせん。たた、確かに、ある画像の蚘述子を別の画像の蚘述子ず比范するべきではありたせん。 ノむズ耐性を量で取埗するこずを蚈画しおいたすが、これは私たちにずっおトリックです。結果のコヌドが倚すぎたす。 ニュヌラルネットワヌクオヌト゚ンコヌダヌオヌト゚ンコヌダヌをLBPカヌドに接続するず、良奜な結果が埗られたす。それは、生の画像からよりも準備されたパタヌンからより倚くの情報を抜出できたす。 より簡単なオプションは、結果のすべおのコヌドを1぀のパむルにすくい䞊げヒストグラムを䜜成、それをすでに䜿甚するこずです。



最初の埌者のアプロヌチは奇劙に芋えたす。 画像の埮小芁玠の盞察䜍眮に関する情報を消去するず、情報は倱われたすか 䞀般に、はい、1ず2が芖芚的により䌌おいる3぀の画像から䟋を遞択するこずは可胜ですが、1ず3はヒストグラムでより䌌おいるこずが刀明したすが、実際にはこれはほずんどありたせん。



完党なヒストグラムには冗長な情報も含たれるこずが倚いため、S。Liao、2009幎5月で提案され、Jinwang Feng、2015で開発された手法を䜿甚するこずをお勧めしたす。









結論ずしお、テクスチャに集䞭するこずを匷制する人はいないこずに泚意しおください。 AdaBoostトレヌニングでは、Haarのような機胜の代わりにLBPが正垞に䜿甚されたす。 統合されたタグが芋逃しおいる高呚波情報をキャプチャしたす。



バリ゚ヌション



これたでのずころ、機械孊習の䜎レベル情報ずしおLBPを遞択するこずは決定的ではないようです。 䞊蚘で説明した欠陥を修正する時が来たした LBPのような驚くほど単玔な蚘述子に察しお、その存圚䞭に倚くのバリ゚ヌションが考案されたした。



2぀の盞反する課題に盎面しおいたす。 最初パタヌンの数を枛らしお、マシンで噛みやすくしたす。 倚くの堎合、ヒストグラムに関心があり、2 ^ 8芁玠のヒストグラムが蚱容される堎合、2 ^ 24のうち、倚くのスペヌスが必芁です。 第二パタヌンの情報内容を増やしたす。 異なるタむプの異なるポむントを区別したいず思いたす。それらが異なるほど、パタヌンは匷くなるはずです。 別のアむテムをノむズ耐性にする必芁がありたす。



重芁なパタヌン


そもそも、私たちにずっお最も興味深いのは、人間の目で認識できるオブゞェクト、぀たり線の境界、角床、ポむント、たたはスポットであるこずに泚意しおください。 このようなオブゞェクトの゚ッゞに粟神的に䞭心点を配眮しおLBPを蚈算するず、円の段階でれロず1が2぀のグルヌプに分かれおいるこずがわかりたす。 円が「匕っ匵られる」ず、0、1、たたは2぀の遷移0-1たたは1-0で数字が圢成されたす。 たずえば、「00111100」、「11111111」、「01111111」は「良い」パタヌンを指し、「10100000」ず「01010101」はそうではありたせん。



喜ぶ。 これを発芋したのは私たちだけではありたせんが。 LBPの積極的な研究を開始した䜜業Timo Ojala、2002幎7月では、そのようなパタヌンが関連情報のほずんどを䌝えるこずにも泚目されたした。 圌らのために、圌らは特別な名前である「均䞀パタヌン」均䞀パタヌンを思い぀きたした。 その数は簡単に蚈算できたす8人の隣人に察しお1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 1 = 37個P + 1* P / 2 + 1がありたす。 さらに、すべおの䞍均䞀パタヌンをすくい取るもう1぀のマヌク。 ずっず良くなりたした。





タグのセットを間匕く他の方法がありたす。 たずえば、䜕らかの理由で䞍均䞀なパタヌンを削陀したくない堎合は、少なくずも䞭倮のピクセルを䞭心に画像を回転させるこずで取埗したすべおのパタヌンを取り陀くこずができたす。 LBPグルヌプを1぀にマッピングする1察1の察応を入力するだけで十分です。 たずえば、「実際の」パタヌンは、右ぞの埪環シフト䞭に最小倀を持぀ものず芋なしたす。 たたは巊に。 莈り物ずしお、蚘述子はオブゞェクトの回転に関しお䞍倉です。 2013幎6月





オブゞェクトず背景の色が倉わる堎合にも、同じパタヌンを受け入れるこずができたす。 次に、LBPず〜LBPの最小倀を「効果的な」パタヌンず芋なすこずができたす。 このオプションは煙怜出䜜業で䜿甚され、暗い背景に察しお明るい灰色に芋えるか、癜い背景に察しお暗い灰色に芋える堎合がありたすHongda Tian、2011。



Yiu-ming Cheung、2014では、通垞、䜙分な隣人を取り陀き、数個のピクセルのみを䜿甚しおりルトラロヌカル蚘述子をカりントし、共起行列をカりントするこずで特城を「収集」するこずが提案されおいたすが、これは通垞のようです掟生物の蚈算ずそれに続く䞍正行為。 それらを効果的に実行するこずは難しいように思えたす。









あるいは、2次の明るさの導関数を考慮するこずができたす。4方向のみが必芁です。 残念ながら、ノむズの悪圱響を受けやすく、画像に関する重芁な情報を䌝達する可胜性は䜎くなりたす。 この手法の適甚もタスクに倧きく䟝存しおいたす。





耐ノむズ性


しかし、䞀般的に、デリバティブを考慮する方法を倉えるずいうアむデアは良かったです。 䞀次導関数に戻り、笊号の倉曎により厳しい制限を導入しおみたしょう。 䞭倮のピクセルから極端な方向ぞの方向ではなく、極端なピクセルから最も遠い方向ぞの方向を考慮したすJunding Sun、2013。







茝床が最初のピクセルから䞭心に、䞭心から2番目に枛少する堎合、ピクセルの単䜍を曞きたす。 茝床が増加するか、特定の動䜜がない堎合-れロ。 残念なこずに、明るい孀独なポむントず暗い孀独なポむントに関する情報は倱われたすが、画像に倚くのノむズが含たれおいるこずがわかっおいる堎合は、これで十分です。



䞀般に、高いノむズレベルが予想される堎合は、より倚くのポむントを䜿甚しお導関数を蚈算し、遞択した円の倖偎にある近隣の倀たたはピクセル倀で重みを付けお平均するこずができたす。



明るさが倉化するかどうかを確認する方法も少し疑わしいようです。 実際、単に導関数の笊号を䜿甚するず、LBPは最小限のノむズが存圚する堎合でも、完党に滑らかな画像䞊でもファントムパタヌンを怜出したす。 このような問題に察凊する通垞の方法は、ピクセル間の茝床の倉化を比范するしきい倀を蚭定するこずです。 画像の性質に関する远加情報がある堎合は、倖郚から質問するこずができたすが、パラメヌタヌに関する䞀般的な占いが始たるため、これはあたりクヌルではありたせん。 より奜たしいオプションは、特定の近傍たたは画像党䜓にわたる埮分の平均倀を蚈算し、それずすでに比范するこずですJinwang Feng、2015幎。





必芁に応じお、より倚くのグラデヌションを䜿甚できたすが、これによりパタヌンの最倧数が増加したす。



詳现情報


ロヌカルバむナリパタヌンは、3次元のケヌスXiaofeng Fu、2012、Guoying Zhao、2007、Xie Liping、2014幎7月に簡単に拡匵できたす。 ビデオをフレヌムの「スタック」ず考える堎合、各ピクセルには8個ではなく、9 + 9 + 8 = 26個の隣接ピクセルがありたすコヌナヌピクセルを削陀する堎合はそれより少なくなりたす。 この堎合、LBPを取埗するさたざたな方法がありたす。 最も䞀般的な2぀は次のずおりです。









最埌に、いく぀かの非ロヌカルフィルタヌの結果を蚘述子に添付できたす。 たずえば、Xie Liping、2014幎7月では、ガボヌルフィルタヌが䜿甚されおいたす。 これらは呚期構造の怜出に適しおいたすが、特定の欠点がありたす。特に、孀立したラむンで「呌び出し」たす。 LBPずグロヌバルフィルタヌを正しく組み合わせお䜿甚​​するず、䞡方の欠点がなくなりたす。 Habrでは、Gaborフィルタヌの䜿甚に぀いお、たずえばhereおよびhereを読むこずができたす 。



䟋



理論のない実践は盲目的ですが、実践のない理論は完党に死んでいるので、䜕かをプログラムしたしょう。 この単玔なPython 3.4コヌドPIL、numpy、matplotlibが必芁は、画像のLBPヒストグラムを読み取っお衚瀺したす。 わかりやすくするために、最適化のみを䜿甚し、最小茝床差は画像の平均茝床差に比䟋しお蚭定したした。 結果から、DLBPを蚈算しお機械孊習に䜿甚できたすが、党䜓ずしお、これは非垞に単玔な実装です。 実際のアプリケヌションでは、画像に前凊理が必芁です。 均質な領域の蚘述子であるれロは曞き蟌たれないこずに泚意しおください。ほずんどの堎合、非垞に倚くのれロが存圚し、ヒストグラムの正芏化を劚げたす。 テクスチャスケヌルの尺床ずしお個別に䜿甚できたす。



コヌド

シンプルずいう名のpythonスタむルからの逞脱を蚱しおください
from PIL import Image import matplotlib.pyplot as plt import numpy as np def compute_direction(x, y, threshold_delta): return 1 if x - y > threshold_delta else 0 # 7 0 1 # 6 x 2 # 5 4 3 def compute_lbp(data, i, j, threshold_delta): result = 0 result += compute_direction(data[i, j], data[i-1, j], threshold_delta) result += 2 * compute_direction(data[i, j], data[i-1, j+1], threshold_delta) result += 4 * compute_direction(data[i, j], data[i, j+1], threshold_delta) result += 8 * compute_direction(data[i, j], data[i+1, j+1], threshold_delta) result += 16 * compute_direction(data[i, j], data[i+1, j], threshold_delta) result += 32 * compute_direction(data[i, j], data[i+1, j-1], threshold_delta) result += 64 * compute_direction(data[i, j], data[i, j-1], threshold_delta) result += 128 * compute_direction(data[i, j], data[i-1, j-1], threshold_delta) return result image = Image.open("test.png", "r") image = image.convert('L') #makes it grayscale data = np.asarray(image.getdata(), dtype=np.float64).reshape((image.size[1], image.size[0])) lbps_histdata = [] mean_delta = 0 for i in range(1, image.size[1]-1): for j in range(1, image.size[0]-1): mean_delta += (abs(data[i, j] - data[i, j-1]) + abs(data[i, j] - data[i-1, j-1]) + abs(data[i, j] - data[i-1, j]) + abs(data[i, j] - data[i-1, j+1]) )/4.0 mean_delta /= (image.size[1]-2) * (image.size[0]-2) #normalizing mean_delta *= 1.5 #we are interested in distinct luminosity changes so let's rise up threshold for i in range(0, image.size[1]): for j in range(0, image.size[0]): if i != 0 and j != 0 and i != image.size[1]-1 and j != image.size[0]-1: tmp = compute_lbp(data, i, j, mean_delta) if tmp != 0: lbps_histdata.append(tmp) hist, bins = np.histogram(lbps_histdata, bins=254, normed=True) width = bins[1] - bins[0] center = (bins[:-1] + bins[1:]) / 2 plt.bar(center, hist, align='center', width=width) plt.show()
      
      







テクスチャの䟋ず結果

より倚くのピクセル
そしお、テクスチャずは䜕ですか たあそれは単なるパタヌンです

さお...



画像は、類䌌点/盞違点が目に芋えるように特別に遞択されおいたす。 たた、特定のパタヌンに定矩されたLBPが倚数/少数存圚する理由を簡単に確認できたす。

パタヌン1



パタヌン1 +ノむズ



パタヌン1 +より倚くのノむズず汚れ



パタヌン2



パタヌン3





より倚くのピクセル
最初の3぀の写真のLBPヒストグラムの比范。 最も特城的なビンは同じですが、いく぀かの誀ったビンがありたす。 倚数のLBP = 255、癜い背景に黒い点に泚目しおください。 䞀臎は緑色でマヌクされ、䜙分なビンは赀色でマヌクされたす。



画像のヒストグラム4ず5の比范、次に画像のヒストグラム1ず4の比范。 䞀臎は緑色でマヌクされ、差異は黄色でマヌクされたす。 これらの写真のテクスチャは異なりたすが、4ず5は1ず4よりも明確に䌌おいたす。これは目でも、ヒストグラムを比范しおも確認できたす。







同じビンが最倧倀を持぀こずが倚いこずに泚意しおください。これらは䞊蚘の均䞀なパタヌンに察応しおいたす。 ただし、異なるテクスチャに察するそれらの分垃は異なりたす。 ノむズレベルずテクスチャのランダム性が高いほど、「ガベヌゞ」LBPが倚くなりたすヒストグラムの小さなビンを参照。



゜ヌスのリスト






All Articles