![]() |
| ||
| image manipulation 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: |
| ||
| 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. 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. |
| ||
| 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(); } |
| ||
| Re: image manipulation Does this happen at runtime or compile time? |
| ||
| Re: image manipulation its happen when runtime " a break" |
| ||
| 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. for(i=0;i<=a.Height;i++)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. |
| ||
| Re: image manipulation thanks the error is at the last pixel of the image!!! |
| ||
| Re: image manipulation Okay so you can handle that error now? |
| ||
| 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 |
| ||
| 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. |
| ||
| Re: image manipulation ok if we suggest that the result is an integer; Is the code above "the message box" have the ability to display it? |
| ||
| Re: image manipulation It has the ability obviously. But how can you convince that NAN is a number? It is not a number. |
| ||
| Re: image manipulation i dont know if you solved this but, the pixels in the images are like an array so it starts and 0 and ends and the length-1 (-1 becuase its starts at 0, and lenth is the count) for(i=0;i<=a.Height-1;i++) { for(j=0;j<=a.Width-1;j++) { |
| All times are GMT -4. The time now is 11:27 pm. |
Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC