# Determine the intensity value, "T", in a 2D image for which 99.9% of all intensity values are less than "T"

조회 수: 2(최근 30일)
Ed Principe 2020년 10월 30일
댓글: Ed Principe 2020년 10월 30일
% I can read in an image and calculate a threshold for which the pixels are above some value, i.e., 6000.
Threshold=Q>6000;
% I can count the number of those pixels above that value
PixelCount = sum(Threshold(:))
% ratio the PixelCount over the total # of pixels in an image with dimensions X1, Y1 to determine a fraction, or percent of pixels above that value
Fraction=PixelCount/(X1*Y1)
But if I wish to calculate the intensity value that represents a desired fraction, i.e. 0.001, - instead of choosing an arbitrary number, like 6000........... how do I program to extract the intensity value that represents cutoff for which 99.9% of pixels have a lower intensity ?
I should mention these are uint16 images.
##### 댓글 수: 1표시숨기기 없음
Ed Principe 2020년 10월 30일
I think I have something that works for me..... Q is an image from an image stack extracted in a for loop wih index 'p':
Q=l.images1(:,:,p);
SortedQ=sort(Q(:));
figure;plot(SortedQ);
title(['Sorted Pixel Intensities:',F,': image #: ', num2str(p),'/',num2str(l.noimages)],'Interpreter', 'none');
SortedQ(round(0.999*X1*Y1))

댓글을 달려면 로그인하십시오.

### 채택된 답변

Akira Agata 2020년 10월 30일
% Read sample gray scale image
% Calculate threshold value (99.9% cut-off)
th = prctile(I(:),99.9);
Check the result:
>> nnz(I<th)/numel(I)
ans =
0.9990
##### 댓글 수: 3표시숨기기 이전 댓글 수: 2
Ed Principe 2020년 10월 30일
Yes, that works, that is essentially what I came up with in my comment on the original post above. Thank you very much!!

댓글을 달려면 로그인하십시오.

### Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by