在matlab中查找图像段的第三个或任何其他最高面积值

Finding 3rd, or any other highest area value of image segment in matlab

我是按照这个写代码的https://in.mathworks.com/help/images/correcting-nonuniform-illumination.html

基本上在我说完之后

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

从这些行中,我将获得具有最高面积的图像部分,但是我想要在这种情况下表示第三高区域的部分。

使用 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);