943,650 Members | Top Members by Rank

Ad:
  • C# Discussion Thread
  • Unsolved
  • Views: 8373
  • C# RSS
You are currently viewing page 1 of this multi-page discussion thread
Mar 31st, 2006
0

image manipulation

Expand Post »
hi
i want to find the correlation coefficient between two images, so i have to apply mathmatical equations on them.
i want to ask how can i convert the image to a form that can deal with maths' operator like -, /, XOR after reading it from a file.

i try to convert it to byte or a string to make calculations but that does not work! :cry:
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
manar is offline Offline
14 posts
since Dec 2005
Apr 1st, 2006
0

Re: image manipulation

You will have to read the image into a two dimensional structure, maybe a two dimensional array, and then apply the operations to corresponding elements at position x and y.
C# Syntax (Toggle Plain Text)
  1. ResultantImage[x][y] = Image1[x][y] - Image2[x][y]

You could do this even with a single dimensional array, but that is rather unintuitive in my opinion.
Moderator
Reputation Points: 572
Solved Threads: 115
Mentally Challenged Mod.
WolfPack is offline Offline
1,559 posts
since Jun 2005
Apr 1st, 2006
0

Re: image manipulation

hi
thanks for your reply;
i deal with two black and white images(binary images); and want to make correlation method calculations on them to find correlation coefficient.
so the pixel value is (0,0,0) for black or (1,1,1) for white.
that i use the GetPixel then test if its black or white and set an integer to 0 if black or 1 if white.
and then deal with these integer instead of converting the images to array int as you suggest.
this is the code below; its behind the correlation coeff button; I have error when debugging at the bold font:
note: im sure that both images have the same size.
any suggestions...




int q=0;
int w=0;
Bitmap a = (Bitmap)Image.FromFile("C:\\standard\\test1.bmp");
Bitmap b = (Bitmap)Image.FromFile("C:\\standard\\test2.bmp");

int x=0;
int y=0;
int i=0;
int j=0;

for(i=0;i<=a.Height;i++)
{
for(j=0;j<=a.Width;j++)
{
Color c=a.GetPixel(i,j);
Color r=b.GetPixel(i,j);

if (c.R == 0 && c.G == 0 && c.B == 0)
q = 0;
if (c.R == 1 && c.G == 01 && c.B == 1)
q = 1;



if (r.R == 0 && r.G == 0 && r.B == 0)
w = 0;
if (r.R == 1 && r.G == 1 && r.B == 1)
w = 1;

x+=q;
y+=w;
}
}
int s=0;
int ss=0;
int sss=0;


for(i=0;i<=a.Height;i++)
{
for(j=0;j<=a.Width;j++)
{
Color c=a.GetPixel(i,j);
Color r=b.GetPixel(i,j);


if (c.R == 0 && c.G == 0 && c.B == 0)
q = 0;
if (c.R == 1 && c.G == 01 && c.B == 1)
q = 1;



if (r.R == 0 && r.G == 0 && r.B == 0)
w = 0;
if (r.R == 1 && r.G == 1 && r.B == 1)
w = 1;



s+=(q-x)*(q-x);
ss+=(w-y)*(w-y);
}
}

for(i=0;i<=a.Height;i++)
{
for(j=0;j<=a.Width;j++)
{
Color c=a.GetPixel(i,j);
Color r=b.GetPixel(i,j);
if (c.R == 0 && c.G == 0 && c.B == 0)
q = 0;
if (c.R == 1 && c.G == 01 && c.B == 1)
q = 1;



if (r.R == 0 && r.G == 0 && r.B == 0)
w = 0;
if (r.R == 1 && r.G == 1 && r.B == 1)
w = 1;

sss+=(q-x)*(w-y);

}
}
double corr;

corr = sss/(System.Math.Sqrt(((s*s)+(ss*ss))));

label1.Text = corr.ToString();

}
Reputation Points: 10
Solved Threads: 0
Newbie Poster
manar is offline Offline
14 posts
since Dec 2005
Apr 1st, 2006
0

Re: image manipulation

Does this happen at runtime or compile time?
Moderator
Reputation Points: 572
Solved Threads: 115
Mentally Challenged Mod.
WolfPack is offline Offline
1,559 posts
since Jun 2005
Apr 1st, 2006
0

Re: image manipulation

its happen when runtime " a break"
Reputation Points: 10
Solved Threads: 0
Newbie Poster
manar is offline Offline
14 posts
since Dec 2005
Apr 1st, 2006
0

Re: image manipulation

Comment out all the other irrelevant code in the loop and other irrelevent code after the loop so that only this remains.
C# Syntax (Toggle Plain Text)
  1. for(i=0;i<=a.Height;i++)
  2. {<blockquote>for(j=0;j<=a.Width;j++)
  3. {<blockquote>Color c=a.GetPixel(i,j);</blockquote>}</blockquote>}
See if the error comes up again. If not, keep on adding lines until you get the error, and try to see what are the values of i and j this happens.
Moderator
Reputation Points: 572
Solved Threads: 115
Mentally Challenged Mod.
WolfPack is offline Offline
1,559 posts
since Jun 2005
Apr 1st, 2006
0

Re: image manipulation

thanks
the error is at the last pixel of the image!!!
Reputation Points: 10
Solved Threads: 0
Newbie Poster
manar is offline Offline
14 posts
since Dec 2005
Apr 1st, 2006
0

Re: image manipulation

Okay so you can handle that error now?
Moderator
Reputation Points: 572
Solved Threads: 115
Mentally Challenged Mod.
WolfPack is offline Offline
1,559 posts
since Jun 2005
Apr 1st, 2006
0

Re: image manipulation

hi
at last i have an int result and i want to display it in the form
the label deal with charachter only so i want to use MsgBox like this:

corr = sss/(System.Math.Sqrt(((s*s)+(ss*ss))));
string corrv = corr.ToString();
MessageBox.Show(corrv, "correlation coeficiant");

But the box give a charachter result like this "NAN"
how can i display the integer value
thankx
Reputation Points: 10
Solved Threads: 0
Newbie Poster
manar is offline Offline
14 posts
since Dec 2005
Apr 1st, 2006
0

Re: image manipulation

NAN is short for "Not A Number". You get this for values like infinity. Check the values of sss and (s*s)+(ss*ss). Most probably either both of them are 0 or the (s*s)+(ss*ss)value is zero. You should know already that 0 divided by 0 is undefined and any number defined by 0 is also undefined. You should check for these conditions before dividing.

Also use [code][/code] when posting code.
Moderator
Reputation Points: 572
Solved Threads: 115
Mentally Challenged Mod.
WolfPack is offline Offline
1,559 posts
since Jun 2005

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C# Forum Timeline: Error Throwing In Calculator Code When Divided By '0'
Next Thread in C# Forum Timeline: counting files on a drive





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC