Схема соответствующих пикселей - PullRequest
0 голосов
/ 05 июня 2018

То, что я делаю, - это обнаружение дерева на основе пикселей со встроенной функцией MATLAB imregionalmax.После нескольких шагов я получаю матрицу, которая содержит значения от 1 до n, основываясь на том, сколько деревьев было обнаружено.Каждое дерево представлено уникальным номером (см. Изображение ниже).Пиксели, которые не принадлежат дереву, представлены через NaN.

Tree matrix

Результат должен выглядеть следующим образом:

Result

Наиболее близкий результат, который я получил к приведенному выше результату, - это использование функции контура, хотя она не совсем справляется с работой, поскольку она рисует контур через середину пикселей, а не снаружи.

Редактировать: у меня есть матрица со значениями высоты (того же размера, что и выше), и контур должен быть только наложением.Кроме того, я хочу, чтобы этот контур действительно был по краям пикселей.

1 Ответ

0 голосов
/ 05 июня 2018

Таким образом, вы хотите иметь положительное значение всякий раз, когда происходит изменение в вашей матрице ROI.Мне кажется, вы ищете gradient

Возможно попробуйте это:

[FX,FY]=gradient(ROI_Matrix);
res = FX~=0 | FY~=0; %so if there is a change in the x-direction or in the y-direction the result for that pixel is 1.

image(res)

[править]

Вы хотите рисовать линии, а не цветные пиксели.Итак, давайте нарисуем линии

imagesc(ROI_Matrix);
[FX,FY]=gradient(ROI_Matrix);
FX = FX~=0;FY = FY~=0;
hold on;
%change in x, horizontal line
for i = 1:size(FX,2)
    for j = 1:size(FX,1)
        if FX(i,j)
            plot([i,i],[j,j+1],'k-');
        end
    end
end
%change in y, verticle line
for i = 1:size(FY,2)
    for j = 1:size(FY,1)
        if FY(i,j)
            plot([i,i+1],[j,j],'k-');
        end
    end
end
hold off;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...