2016-08-12 8 views
1

こんにちはバイナリ変数( 'column' size 733x1と呼ばれています)を持っていて、1の値が1である0の中間点を変更しようとしています(00001110011〜00001111111 .. )。私はimfillを使用しようとしましたが、そうすることはできませんでした。私は助けにタイプ論理からuint8にそれを変換しましたが、それは働いていません。MATLABでimfillコマンドを使用すると問題が発生しました

column=column*255 % convert to form to work with 'imfill' command 
column_fill=uint8(column) 
column_fill=imfill(column); 

しかし、1の間に私の変数の中には、私はいくつかの0を残しています。 Link to data。出力(000..000111000011101 ... 000 ... 000111111111111 ...)ありがとう。

答えて

1

に掛ける必要があります。

load data 
column=column100*255 % convert to form to work with 'imfill' command 

%Create column filled with 255 values. 
white_column = ones(size(column))*255; 

%Padd column from both sides (create 3 columns image). 
im = [white_column, column, white_column]; 

%Apply imfill on image im 
im_fill = imfill(uint8(im)); 

%Extract center column of im_fill. 
column_fill = im_fill(:, 2); 

また、以下のコードをusiなしで試すこともできますng imfill

column_fill = column100; 
column_fill(find(column100 == 1, 1):find(column100 == 1, 1, 'last')) = 1; 
+0

ありがとうございました!完璧に働いた。 –

+0

あなたの答えをありがとう。前の '0'の値を '1'に変更するために最後の '1'が見つかったときにこれを変更する方法はありますか?たとえば、(000 ... 000100100000〜000 ... 000111111111)です。ありがとう。 –

1

あなたは'holes'オプション

BW2= imfill(BW,'holes') 

imfillを使用することができますが、試してみてください、次のサンプルのバイナリイメージを残していない255

+0

これを試しましたが、うまくいかなかった。添付されているデータセットを見つけてください。 https://www.dropbox.com/s/9ib58auz90eg5f5/data.mat?dl=0 –

+0

変数 'column'はバイナリでなければなりません。 '* 255'を' column = column * 255'から削除しましたか? – kkuilla

+0

はい、データセットには含まれていませんでした。これは私が考えたアプローチでした。 –

関連する問題