フィルターのクリア

how can i perform gray scale image normalization???

94 ビュー (過去 30 日間)
mmm ssss
mmm ssss 2012 年 1 月 18 日
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 件のコメント
Walter Roberson
Walter Roberson 2012 年 1 月 19 日
We would need to see the current code.
Xylo
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
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 件のコメント
mmm ssss
mmm ssss 2012 年 1 月 19 日
image analyst
i think that your opininon is correct but, in many paper they use the grayscale normalization to reduce the differences in illumination.
Image Analyst
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
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
Image Analyst 2022 年 2 月 8 日
No it's not:
Originalimage = [100, 200]
Originalimage = 1×2
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
NormalizedImage = 1×2
255 510
% Do my formula:
normalizedImage = uint8(255*mat2gray(Originalimage))
normalizedImage = 1×2
0 255
Syed Ahson Ali Shah
Syed Ahson Ali Shah 2022 年 2 月 10 日
There was typo mistake. I corrected now.
My answer is 100% correct. I guarantee

サインインしてコメントする。


Walter Roberson
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
Walter Roberson 2012 年 1 月 19 日
You should be able to extrapolate.
y = uint8(255 .* ((double(m)-double(min1))) ./ double(max1-min1));
mmm ssss
mmm ssss 2012 年 1 月 19 日
can you see the modified code:
clear all
>> m=imread('E:\master_matlab\HandVein_DataSet\0010hv3.bmp');
min1=min(min(m));
max1=max(max(m));
y = uint8(255 .* ((double(m)-double(min1))) ./ double(max1-min1));
>> imshow(m);
>> figure,imshow(y);title(,normalization,);
i implemented also image analyst'method:
J = filter2(fspecial('sobel'), m);
K = mat2gray(m);
figure,imshow(K);
can you give me your opinion in the resultant images (Y&K) , is they good or the image before normalization is more suitable.

サインインしてコメントする。

カテゴリ

Help Center および File ExchangeImage Processing Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by