问题描述
公式如圖片程式碼如下:我已經先把pictureBox2.Image是IL==>也是放大後影像pictureBox3.Image是Iold==>濾波後的影像height=this.pictureBox2.Image.Height;width=this.pictureBox2.Image.Width;Bitmapbitmap1=newBitmap(pictureBox2.Image);Bitmapbitmap2=newBitmap(pictureBox3.Image);Bitmapbitmap=newBitmap(width,height);double[,]image=newdouble[width,height];double[,]image0=newdouble[width,height];double[,]image1=newdouble[width,height];double[,,]image2=newdouble[width,height,30];double[,,]image3=newdouble[width,height,30];double[,]image4=newdouble[width,height];double[,,]image5=newdouble[width,height,30];double[,,]image6=newdouble[width,height,30];double[,]image1R=newdouble[width,height];double[,]image1G=newdouble[width,height];double[,]image1B=newdouble[width,height];double[,]image2R=newdouble[width,height];double[,]image2G=newdouble[width,height];double[,]image2B=newdouble[width,height];double[,]image3R=newdouble[width,height];double[,]image3G=newdouble[width,height];double[,]image3B=newdouble[width,height];double[,]image4R=newdouble[width,height];double[,]image4G=newdouble[width,height];double[,]image4B=newdouble[width,height];double[,,]image5R=newdouble[width,height,30];double[,,]image5G=newdouble[width,height,30];double[,,]image5B=newdouble[width,height,30];double[,,]image6R=newdouble[width,height,30];double[,,]image6G=newdouble[width,height,30];double[,,]image6B=newdouble[width,height,30];doublesum=0;doublesumb=0;doubledev=0;doubledevb=0;doublesum0=0;doublesum2=0;doubledev0=0;doubledev1=0;doublegray1=0;doublegraytest0=0;intv=width*height;//doubleB=Convert.ToDouble(textBox1.Text);doubleC=Convert.ToDouble(textBox2.Text);for(x=0;x<width;x++){for(y=0;y<height;y++){Colorc=bitmap1.GetPixel(x,y);Colorc1=bitmap2.GetPixel(x,y);image1R[x,y]=c.R;image1G[x,y]=c.G;image1B[x,y]=c.B;image2R[x,y]=c1.R;image2G[x,y]=c1.G;image2B[x,y]=c1.B;image4R[x,y]=c.R;image4G[x,y]=c.G;image4B[x,y]=c.B;}}for(intL=0;L<C;L++){for(x=0;x<width;x++){for(y=0;y<height;y++){image3R[x,y]=0.01*((int)(image1R[x,y]-image2R[x,y]));image3G[x,y]=0.01*((int)(image1G[x,y]-image2G[x,y]));image3B[x,y]=0.01*((int)(image1B[x,y]-image2B[x,y]));image4R[x,y]+=image3R[x,y];image4G[x,y]+=image3G[x,y];image4B[x,y]+=image3B[x,y];image0[x,y]=(image1R[x,y]*0.299+image1G[x,y]*0.587+image1B[x,y]*0.114);image4[x,y]=(image4R[x,y]*0.299+image4G[x,y]*0.587+image4B[x,y]*0.114);image2[x,y,L]=image4[x,y];image5[x,y,L]=image0[x,y];image5R[x,y,L]=image4[x,y];image6R[x,y,L]=image4[x,y];}}for(x=0;x<width;x++){for(y=0;y<height;y++){image4[x,y]=0;}}for(x=0;x<width;x++){for(y=0;y<height;y++){sum0+=image5R[x,y,L];}}sum2=sum0/v;for(x=0;x<width;x++){for(y=0;y<height;y++){dev0+=Math.Pow((image6R[x,y,L]-sum2),2);}}dev1=Math.Sqrt(dev0/v)*0.2;//絕對值for(x=0;x<width;x++){for(y=0;y<height;y++){image6[x,y,L]=image5[x,y,L];image3[x,y,L]=image2[x,y,L];gray1+=image3[x,y,L]/v;graytest0+=image6[x,y,L]/v;}}for(x=0;x<width;x++){for(y=0;y<height;y++){Colorc=bitmap1.GetPixel(x,y);image1R[x,y]=c.R;image1G[x,y]=c.G;image1B[x,y]=c.B;image[x,y]=(image1R[x,y]*0.299+image1G[x,y]*0.587+image1B[x,y]*0.114);}}for(x=0;x<width;x++){for(y=0;y<height;y++){sum+=image[x,y];}}sumb=sum/v;for(x=0;x<width;x++){for(y=0;y<height;y++){dev+=Math.Pow((image[x,y]-sumb),2);}}devb=Math.Sqrt(dev/v)*0.2;
解决方案
解决方案二:
这里回帖的人大多是来解决错误的,而不是寻找错误.