Suppose i have a set of face images I1,I2, ,IM ,size of each image being LxL,in the training set.Now how to histogram equalize all the images and represent them as row vectors of size L^2 (i mean L to the power 2)each...
No products are associated with this question.
doc histeq doc reshape
Error:
??? Error using ==> iptcheckinput
Function HISTEQ expected its first input, I, to be two-dimensional.
Error in ==> histeq at 71
iptcheckinput(a,{'uint8','uint16','double','int16','single'}, ...
Error in ==> histeq1 at 3
J = histeq(I);
the code I wrote is:
clc;
I = imread('C:\Users\Manoj\Documents\MATLAB\sorry.tif');
J = histeq(I);
imshow(I)
figure, imshow(J)
Your error is because the matrix you want to equalize is not 2D. Im assuming its an RGB image. Either equalize all color channels separately (dangerous) or convert to a difference colorspace.
If you convert to e.g. L*a*b* or YCbCr you only need to equalize the luma channel, and then convert back again to RGB.
Note you can not represent an LxL RGB image as a vector of length L^2 without resorting to:
Suppose you convert to grayscale then it is possible by using reshape or just J(:). To avoid columnwise dumping transpose first (permute for N-Dim.) e.g. (J = J').
0 Comments