2016-05-19 8 views
0

ソース画像 enter image description hereどのように我々はポイント

I=imread('http://i.stack.imgur.com/qDhl7.jpg'); 

いくつかの前処理

nsc = bwareopen(~im2bw(I, .2),250); 
i3=bwmorph(nsc,'thin'); 

のリストから、お互いに近いエンドポイントをペアにすることができ、我々は薄い画像

enter image description here

i4 = bwmorph(,'endpoints'); 
を取得

操作をモーフィングした後、我々は、エンドポイント

enter image description here

のリストを取得するには、今私は、ドアを閉じるために、エンドポイントのそれらのペアを選択する必要があります。次の画像に示すように。 enter image description here

私はこれらの画像を最初のものとマージすることができます。これを得るにはenter image description here

答えて

-1

あなたのアプローチで見ている問題は、キッチンとリビングルームを隔てる壁です。エンドポイントはありますが、エンドポイントに取り付けられたドアや窓がある壁の他の隙間とは異なり、取り付けられているドアはありません。これらのケースは分離しにくいでしょう。

あなたは正確に何をしようとしていますか?あなたの入力画像と目標画像を比較すると、別々の部屋を色づけしたいと思いますか?次に、bwconncompを使用して、画像内の連結領域を取得し、壁領域を削除し、領域を繰り返して色付けしておくことをお勧めします。

+0

画像から壁に取り付けられたドア、窓、およびwc要素をクリーンアップすると、ルームが開かれるため、希望する接続コンポーネントをルームとして取得できません。私は部屋、窓、ドア、または他のシンボルのない壁だけを持っていたいので。 –

+0

私はまた、部屋の境界を取得するためにbwdistと滝を試しましたが、しばらくして空の領域に望ましくない壁を作りました。 –

+0

私はドアの図面が開いたドアを見ているのを見ましたが、部屋の色はドアを閉じたままにしなければならないので、接続されたリージョンは機能しません。矩形を囲むようにしてみることもできますが、それは長方形の部屋でしか機能しません。 Matlabで入力画像を見ると、ドアや窓はWCや壁などの図とは異なる色をしているようです。そこで、ドアと窓を色で抽出し、それらをタッチしてエンドポイントのペアを取得するエンドポイントとペアにすることができます。 –