2013-02-20 2 views
0

Прикрепленные является образом cameraman.tif, который поставляется с MATLAB, но после применения [fuzzy c-means]1найти те пиксели, которые удовлетворяют конкретный критерий

enter image description here

Кроме того, в качестве выхода из алгоритма u2 (степени членства пиксель). Для получения этой информации смотрите matlab.mat.

Что я хочу сделать, это выбрать пиксель (ы) с прикрепленного изображения, значение u2 - equal to 1.

Любые идеи о том, как это можно сделать в matlab?

Спасибо.

ответ

3

Получить индексы соответствующих пикселей:

ind = find(u2 == 1); % return indices of all pixels with u2 eq to 1 

Получить пиксели themselfs

pixels = img(ind); 
+0

Когда я это делаю для 'u2', я получаю:' ind = Empty matrix: 0-by-one' alth существуют значения, равные '1'. Почему это? Спасибо – Simplicity

+1

Это может быть связано с числовыми проблемами. Как насчет 'find (abs (u2-1) <1e-6)'? – Shai

+1

Когда я проверил 'matlab.mat', когда вы посмотрите на значение ячейки, оно говорит' 1.0000'. Но, когда я дважды щелкаю по ячейке, я поразительно получаю: '0.999999999259113'! Кажется, почему я получаю пустую матрицу как возвращаемое значение ... – Simplicity

2

В качестве альтернативы, вы можете избежать использования находки и идти прямо в logical indexing.

Учитывая изображение как:

>> image = [1 3 5; 2 3 1; 3 2 2] 

image = 

    1  3  5 
    2  3  1 
    3  2  2 

вы можете найти пиксели со значением 2, используя условие iamge == 2:

K>> image == 2 

ans = 

    0  0  0 
    1  0  0 
    0  1  1 

Если, например, вы хотите, чтобы манипулировать эти пиксели, установив их до 7 вы можете легко сделать это с помощью одной строки:

image(image == 2) = 7 

image = 

    1  3  5 
    7  3  1 
    3  7  7 
Смежные вопросы