How can I get the histeq function to ignore NaN values?

5 visualizaciones (últimos 30 días)
Naim
Naim el 19 de Sept. de 2017
Respondida: Image Analyst el 22 de Sept. de 2017
I have a set of 2D pictures, I want to only focus on a small blob in the middle while ignoring a sea of NaNs around it
If I keep the NaNs, histeq spits out a plain white image. Is there a way to stop NaNs from corrupting the histeq function?
thanks in advance
- Nadeem

Respuestas (2)

Ramnarayan Krishnamurthy
Ramnarayan Krishnamurthy el 22 de Sept. de 2017
It appears that MATLAB warns you about using histeq on a matrix with NaNs and replaces them to 0.
I would suggest the following if you want to apply histeq only to non-NaN values in a matrix
% Setting up a sample image
% Use im2double as double saves NaN while uint8 converts it to 0
I = im2double(imread('cameraman.tif'));
I(1:100,1:100) = NaN
I(1:256,1:100) = NaN
I(1:256,180:end) = NaN
I(1:100,:) = NaN
I(160:end,:) = NaN
figure, imshow(I)
% Duplicate Matrix
I2 = I;
% Store the output of the contrasted stretched image in I2
I2(~isnan(I2)) = histeq(I2(~isnan(I2)));
figure, imshow(I2)
Hope this helps!

Image Analyst
Image Analyst el 22 de Sept. de 2017
I wouldn't even use histeq(). I mean, WHY? It often/usually gives crummy, harsh, unnatural looking images, and it's not needed to do image analysis.

Categorías

Más información sobre Image Filtering and Enhancement en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by