Нахождение 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);