Расширенное преобразование максимумов в Matlab - PullRequest
1 голос
/ 06 мая 2010

Я использую imtophat, чтобы применить фильтр к массиву m x n. Затем я нахожу локальный максимум, используя imextendedmax(). Я получаю в основном 0 везде, кроме 1 в общих областях, где я ожидаю локальный максимум. Странно то, что я не получаю только один локальный максимум. Вместо этого в этих местах я получаю МНОГИЕ элементы с 1, такие как

00011100000 
00111111000 
00000110000

все же значения там близки, но НЕ равны, поэтому я ожидаю, что будет значение, которое выше, чем все остальные. Вот мне и интересно:

  1. если это ошибка и как я могу это исправить
  2. как бы вы выбрали, выберите элемент из этих 1 с наибольшим значением.

1 Ответ

3 голосов
/ 06 мая 2010

а) Это особенность. Вы звоните imextendedmax с двумя входными аргументами. Второй вход - это мера того, насколько разные пиксели могут быть от максимума и при этом все равно учитываться для расширенного максимума.

b) Вы можете выбрать элементы с наибольшим значением, используя max для пикселей в группе.

%# for testing, create a  mask with two groups and an image of corresponding size
msk = repmat([00011100000;...
00111111000;...
00000110000],1,2);

img = rand(size(msk));
imSize = size(img);

%# to find groups of connected ones, apply connected component labeling
cc = bwconncomp(msk);

%# loop through all groups and find the location of the maximum intensity pixel
%# You could do this without loop, but it would be much less readable
maxCoordList = zeros(cc.NumObjects,2);
for i = 1:cc.numObjects
    %# read intensities corresponding to group
     int = img(cc.PixelIdxList{i});

    %# find which pixel is brightest
    [maxInt,maxIdx] = max(int);

    %# maxIdx indexes into PixelIdxList, which indexes into the image.
    %# convert to [x,y]
    maxCoordList = ind2sub(imSize,cc.PixelIdxList{i}(maxIdx));
end

%# confirm by plotting
figure
imshow(img,[])
hold on
plot(maxCoordList(:,2),maxCoordList(:,1),'.r')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...