Нахождение 3-го или любого другого наибольшего значения площади сегмента изображения в Matlab

Я пишу код в соответствии с этим https://in.mathworks.com/help/images/correcting-nonuniform-illumination.html

в основном после моего шага сказать

grain_areas = [graindata.Area]
[area, id] = max(grain_areas)

из этих линий я получу сегмент изображения, который имеет самую высокую площадь, однако я хочу сегмент, который в этом случае говорит, что 3-я самая высокая область.

1 ответ

Использование sort с 'descend' варианты, чтобы получить области от самых больших до самых маленьких. Тогда вы можете получить доступ к n-й по величине области, как вам угодно

grain_areas_sorted = sort(grain_areas, 'descend');
grain_areas_sorted(3)

ans =

   236

Если вы используете MATLAB 2017b или новее, вы можете просто использовать функцию maxk который даст вам k-е наибольшее число.

[area, id] = maxk(grain_areas,3);
Другие вопросы по тегам