2017-05-27 52 views
1

我在MATLAB中有一個.mat文件。它的尺寸是1040x1392從.mat文件保存特定像素值的座標

在這幅圖中,我想保存其值大於x而小於y的單元格的所有座標。除了蠻力檢查每個像素之外,我無法找到任何有效的方法來執行此操作。

我知道nnz()函數返回有多少像素有一定的值。但是,我無法找到解決我的特殊情況的有效方法。我想用[bwlabel][1]來做到這一點,但是,這給了我所有的連接組件,我仍然需要手動去查看我想保留哪些連接的組件。

我也試過[r, c] = find(matrix > 2);但是這返回了兩個大小遠大於矩陣大小的變量。

如何去做這件事?

回答

1

您可以利用matlab的find()函數。

m = load('myMatFile.mat'); 

[row, col] = find(x<m & m<y); 

只需用你的.mat文件替換myMatFile.mat即可。如果您需要更多幫助,請隨時提出任何問題。

+0

OOps,我剛剛在我的問題中也發佈了這個。當我嘗試find()時,我的'r'和'c'變量的大小是'222421x1' – nini

+0

,或者它可能將它視爲一個大數組?我認爲這可能是我的問題。在這種情況下,我的問題就變成了,我該如何保存行和列信息? – nini

+0

@nini這不是問題。 r和c中的每對值都會給出滿足條件的點的座標。例如[r(1),c(1)]是符合條件的第一個點,[r(2),c(2)]是第二個點,並且由於您的圖像的大小爲1040 * 1392,你的圖像由(1040 * 1392 = 1447680)點組成。所以你的答案的大小不會大於矩陣的大小(1447680> 222421)。 – user3597574