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

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

в основном после моего шага, скажем

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

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

Ответы [ 2 ]

0 голосов
/ 02 декабря 2018

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

[area, id] = maxk(grain_areas,3);
0 голосов
/ 01 декабря 2018

Используйте sort с опциями 'descend', чтобы получить области от самых больших до самых маленьких.Затем вы можете получить доступ к nth самой большой области, как вам будет угодно

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

ans =

   236
...