在matlab中获得图像的前25%强度值

在matlab中获得图像的前25%强度值,matlab,image-processing,Matlab,Image Processing,我想创建一个阈值遮罩,等于图像强度值的前25%。我使用了此代码,但未生成所需的值: img1 = im2double(imread('image1.tif')); threshold = (0.25); img1(img1 < threshold) = 0; img1(img1 > threshold) =1; 试一试 试一试 更新版本- img1 = im2double(imread('coins.png')); %// input image threshold = 0.25

我想创建一个阈值遮罩,等于图像强度值的前25%。我使用了此代码,但未生成所需的值:

img1 = im2double(imread('image1.tif'));
threshold = (0.25);
img1(img1 < threshold) = 0;
img1(img1 > threshold) =1;
试一试

试一试

更新版本-

img1 = im2double(imread('coins.png')); %// input image

threshold = 0.25;
[simg1,sind] = sort(img1(:),'descend');
idx = find(cumsum(simg1(:)) >= sum(img1(:))*threshold ,1,'first');
mask = false(size(img1));
mask(sind(1:idx))= 1;

figure,imshow(img1)
figure,imshow(mask)
更新版本-

img1 = im2double(imread('coins.png')); %// input image

threshold = 0.25;
[simg1,sind] = sort(img1(:),'descend');
idx = find(cumsum(simg1(:)) >= sum(img1(:))*threshold ,1,'first');
mask = false(size(img1));
mask(sind(1:idx))= 1;

figure,imshow(img1)
figure,imshow(mask)


我试过了,真的!有什么问题?为摄影师试一试,然后是imshow。也看看这个答案是否有用:这里提供的任何一种解决方案对你有用吗?我试过了,它有用!有什么问题?为摄影师和imshow试一试。也看看这个答案是否有用:这里提供的任何一种解决方案对你有用吗?我想我被卡住了。。。你为什么不喜欢百分位数版本?@matheburg没什么问题!只是坚持图像处理。工具箱,或者我想只是提供了另一种解决方法!:用多种方法解决是有意义的,对吗@matheburg你们都有很好的解决方案,有两种不同的方法很好+我想我被卡住了。。。你为什么不喜欢百分位数版本?@matheburg没什么问题!只是坚持图像处理。工具箱,或者我想只是提供了另一种解决方法!:用多种方法解决是有意义的,对吗@matheburg你们都有很好的解决方案,有两种不同的方法很好+你的解决方案看起来是合法的,但我不知道为什么我没有得到想要的形象!我确信所需的图像是正确的25%掩蔽,因为它从gonazelz的图像处理书@吉姆,嗯。。。有趣的问题,你能提供图片和你的目标吗?如果你有足够的动力来澄清这个谜团:我想OP可能在寻找一个简单的版本,我不知道,这仍然是一个猜测,不知道他/她对25%强度的期望是什么+在OP澄清正确的方法之前,我提供了一个简短的方法来实现这一点。你的解决方案看起来是合法的,但我不知道为什么我没有得到想要的形象!我确信所需的图像是正确的25%掩蔽,因为它从gonazelz的图像处理书@吉姆,嗯。。。有趣的问题,你能提供图片和你的目标吗?如果你有足够的动力来澄清这个谜团:我想OP可能在寻找一个简单的版本,我不知道,这仍然是一个猜测,不知道他/她对25%强度的期望是什么+1提供一个简短的方法来实现这一点,直到OP澄清了正确的方法。