Arrays 从灰度图像中提取最亮像素
我有一个灰度图像,我需要从中找到顶部0.1%的最亮像素 我尝试在0.1%的像素上使用max函数,但它没有给出正确的结果 代码:Arrays 从灰度图像中提取最亮像素,arrays,matlab,image-processing,Arrays,Matlab,Image Processing,我有一个灰度图像,我需要从中找到顶部0.1%的最亮像素 我尝试在0.1%的像素上使用max函数,但它没有给出正确的结果 代码: [m,n]=size(image); num_pixels=m*n; pixels=floor(num_pixels*0.01) 在这里,我在变量pixels中得到了大约7000个数字。我不知道如何排序这7000像素,因为它只是给我一个计数。我需要得到这个计数的所有像素值 任何人都可以建议如何在MATLAB中执行此操作。您可以通过以下方式获得最高强度值: so
[m,n]=size(image);
num_pixels=m*n;
pixels=floor(num_pixels*0.01)
在这里,我在变量pixels
中得到了大约7000个数字。我不知道如何排序这7000像素,因为它只是给我一个计数。我需要得到这个计数的所有像素值
任何人都可以建议如何在MATLAB中执行此操作。您可以通过以下方式获得最高强度值:
sortedIntensityValues = sort(grayScaleImg(:)); % ascending order
numPixels = numel(sortedIntensityValues);
topIntensity = sortedIntensityValues(floor(numPixels*0.999));
这样做(如评论中所述):
或者,如果您有stats工具箱,您可以使用prtcile
函数执行以下操作:
topIntensity = prctile(grayScaleImg(:),99.9);
下面是使用第三种方法的概念证明:
grayScaleImg = rand(4096,4096);
topIntensity = prctile(grayScaleImg(:),99.9);
logicalIndices = grayScaleImg>topIntensity;
根据第一个猜测,为什么不按值对像素排序并取最高的0.1%像素?我的代码如下:[m,n]=大小(图像);num_像素=m*n;像素=地板(num_像素*0.01);。在这里,我的可变像素中有大约7000个数字。现在我不知道如何排序这7000像素,因为它只是给我一个计数。我需要得到这个计数的所有像素值。如何获取所有像素值。如果您有一些您尝试过的代码,请将其放在原始问题中。首先线性化您的矩阵
图像
,然后排序(降序)图像
,只取开始的1到像素
值。这些将是具有最高亮度的0.1%像素。您只需要这些像素的值,还是还需要位置?
logicalIndices = grayScaleImg>topIntensity;