Error in image normalization

Hello Team,
I have written this code to compute the normalization of a gradient image.
if true
% code
function [horDiffNorm, verDiffNorm] = normalization(H, V)
sumH = 0;
sumV = 0;
[rowsH, colsH, depthH] = size(H);
[rowsV, colsV, depthV] = size(V);
for jH = 1:1:rowsH
for iH = 1:1:colsH
for zH = 1:1:colsH
if (zH ~= iH)
sumH = sumH + power(H(jH, zH), 2);
end
end
horDiffNorm(jH, iH) = H(jH, iH)/ sqrt(double(1/(2*(colsH-1))*sumH));
end
end
end
end
I performed debugging and noticed the value of SumH reaches (255) at zH = 32 and then it stuck at 255, even though the next pixels are not 0.
Can you please help?

 Accepted Answer

Right after the function header put in
H = double(H) ;

More Answers (1)

Image Analyst
Image Analyst on 6 Oct 2018
Why not simply use imgradient()?

10 Comments

Thanks for you comment. I am new to Matlab and did not know about imgradient(). I need to perform normalization following the equation attached to this comment.
Based on Matlab documentation, I can use this syntax: [Gmag,Gdir] = imgradient(I,method)
But the above equation is not listed under the available methods.
Am I right?
What is that formula supposed to do? If you just want the gradient magnitude, why can't you just use imgradient()? What do you need to do AFTER that?
Matlab Student
Matlab Student on 6 Oct 2018
Edited: Matlab Student on 6 Oct 2018
The value of every pixel should be divided by the square root of the summation of neighbors to the right and left of the subjective pixel
Dnormalize(x,y) = D(x,y)/sqrt(1/2N*summation(power(D(x+i,y),2)))
N is the number of neighbors to the left and right of the pixel (x,y)
You're going all the way from the pixel to the extreme far right edge and extreme bottom edge, instead of just in a localized scanning window like usual. Why???
I am a very beginner to Matlab and I don't know another way to do the same. What do you mean by "a localized scanning window" ?
If you can show me another professional and efficient way to do the same, it will be appreciated.
Would you please check this out: https://www.mathworks.com/matlabcentral/answers/422634-analog-output-signal-after-applying-dft
What are you trying to do with this unusual algorithm? A spatial filter? A convolution? A correlation? Why did you program it up in the first place?
What is H? Is it already the gradient image, or do you want to take the gradient of H?
I am trying to implement a method designed to measure the blockiness of distorted images. This methods was proposed in "A Blind Reference-Free Blockiness Measure" paper for Chunhua Chen and Jeffrey A. Bloom (Dialogic Media Labs) and was published in 2010.
I have already written the code, but while testing/ debugging it still need some modifications.

Sign in to comment.

Categories

Community Treasure Hunt

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

Start Hunting!