2016-08-12 61 views
1

嗨我有一個二進制變量(稱爲'列'大小733x1),我試圖改變0之間我有1的1到1(即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

感謝您的回答。當找到最後一個'1'來將所有以前的'0'值更改爲'1'時,是否有辦法改變它。例如(000 ... 000100100000至000 ... 000111111111)。謝謝。 –

1

你可以使用imfill'holes'選項

BW2= imfill(BW,'holes') 

,但你應該讓你的形象二進制,而不是與255

+0

我試過了,它沒有工作。請找到附加的數據集。 https://www.dropbox.com/s/9ib58auz90eg5f5/data.mat?dl=0 –

+0

你的變量'column'應該是二進制的。你是否從'column = column * 255'中刪除了'* 255'? – kkuilla

+0

是的,我做了,它不包含在數據集中,這是我想到的一種方法。 –