MATLAB Answers

Naim
0

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

Asked by Naim
on 19 Sep 2017
Latest activity Answered by Image Analyst
on 22 Sep 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

  0 Comments

Sign in to comment.

2 Answers


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!

  0 Comments

Sign in to comment.


Answer by Image Analyst
on 22 Sep 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.

  0 Comments

Sign in to comment.