Threshold image after applying mask

12 visualizaciones (últimos 30 días)
Ihiertje
Ihiertje el 1 de Mayo de 2017
Comentada: Image Analyst el 30 de Mzo. de 2020
Hi,
I have an image (object + background, uint16) and I remove the background of this image by using imbinarize. So the background has a value of zero and the object has its original values (1000 - 7000). Now I want to apply a threshold only on the object. I tried to change the zero values to nan, but that did not work. How can I only threshold the object, without all the zeros of the background?
Thanks!
Edit: I attached a photo of my file. Inside the red line is the object and outside is the background (black). I want to apply a threshold on the intensity of the object. I tried to remove the background by a mask, but when applying an automatic threshold, the background is still included. So hope someone can help.

Respuesta aceptada

Image Analyst
Image Analyst el 1 de Mayo de 2017
I think imbinarize() and graythresh() work on 1-D images. So if you want to determine the a threshold only considering the gray levels of the gray ring and not considering the black background, extract the ring pixels into a list and pass them to graythresh():
ringPixels = originalImage(originalImage > theThreshold); % No black pixels here
newThreshold = graythresh(ringPixels);
Since you've already masked the image by doing something like
maskedImage = originalImage; % Initialize
maskedImage(mask) = 0; % Erase background.
you could also do the first line like this
ringPixels = maskedImage(maskedImage > 0);
and then call graythresh();
  3 comentarios
Dua Arshad
Dua Arshad el 30 de Mzo. de 2020
Sir, How can i apply this graythresh masking concept on the whole grayscale image. i have to segment the backgroud of fruits.
is it possible if i take first the binary image and make the background black and then use its mask to the gray image to remove background?
Image Analyst
Image Analyst el 30 de Mzo. de 2020
You can do :
% Assume background is dark. Threshold to find dark pixels.
backgroundMask = grayImage < 50; % or > or whatever value works for you instead of 50.
% Blacken background.
grayImage(backgroundMask) = 0; % Set background to 0.

Iniciar sesión para comentar.

Más respuestas (0)

Community Treasure Hunt

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

Start Hunting!

Translated by