how can i perform gray scale image normalization???
조회 수: 95 (최근 30일)
이전 댓글 표시
i want to implement normalization to gray scale image to reduce the effect of illumination's differences.
the eq. of the grayscale normalization is :
y=((x-min)*255/(max-min))
x : gray scale value of original image.
y : gray scale value of op image(after normalization).
min : minimum gray scale for the original image.
max : maximum gray scale for the original image.
i tried to perform this by :
m=imread();
min1=min(min(m));
max1=max(max(m));
y=((m-min1).*255)./(max1-min1);
imshow(m);figure,imshow(y);
but it is wrong code .
i dont know why ?
is there any help?
regards
댓글 수: 5
Xylo
2014년 3월 11일
you can use double() before main function....
y=double((m-min1).*255./(max1-min1)); and as m is a 2D variable, y should be 2D variable. i.e u have to write as for i=1:m for j=1:n y(i,j)=double((m(i,j)-min1).*255./(max1-min1)); end end
답변 (3개)
Image Analyst
2012년 1월 19일
Or you can simply do this:
normalizedImage = uint8(255*mat2gray(grayImage));
imshow(normalizedImage);
and not worry about the normalization because mat2gray will do it for you.
댓글 수: 4
Image Analyst
2012년 1월 19일
Then maybe their algorithm uses image normalization as just one step in the process and maybe you're not doing all the steps. Or else maybe their algorithm is not appropriate for the kind of video or images you have.
Syed Ahson Ali Shah
2022년 2월 8일
편집: Syed Ahson Ali Shah
2022년 2월 10일
This is the Formula:
Normalized Image = (Original image - min of image) * ((newMax-newMin) / (ImageMax - ImageMin)) + newMin
where newMax and newMin is 255 and 0 respectively for the case when normalization is between 0 to 255.
댓글 수: 2
Image Analyst
2022년 2월 8일
No it's not:
Originalimage = [100, 200]
minofimage = min(Originalimage(:));
ImageMin = min(Originalimage(:));
ImageMax = max(Originalimage(:));
newMax = 255;
newMin = 0;
% Do the formula he gave.
NormalizedImage = (Originalimage - minofimage) * ((newMax-newMin) / (ImageMax - ImageMin)) + newMax
% Do my formula:
normalizedImage = uint8(255*mat2gray(Originalimage))
Syed Ahson Ali Shah
2022년 2월 10일
There was typo mistake. I corrected now.
My answer is 100% correct. I guarantee
Walter Roberson
2012년 1월 18일
I would suggest you use
y = uint8(255 .* ((double(m)-min1)) ./ (max1-min1));
With your existing code, the (x-min) would be okay, but multiplying by 255 would get saturation to 255 whenever the difference was not 0, and then you would get integer division of that 0 or 255 by the range interval.
댓글 수: 5
Walter Roberson
2012년 1월 19일
You should be able to extrapolate.
y = uint8(255 .* ((double(m)-double(min1))) ./ double(max1-min1));
참고 항목
카테고리
Help Center 및 File Exchange에서 Image Processing Toolbox에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!