private void CmdProcess_Click(object sender, EventArgs e) { int Min_PosX = 0, Min_PosY = 0, Max_PosX = 0, Max_PosY = 0; BitmapData SrcBmpData = SrcBmp.LockBits(new Rectangle(0, 0, SrcBmp.Width, SrcBmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); BitmapData DstBmpData = DstBmp.LockBits(new Rectangle(0, 0, DstBmp.Width, DstBmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); Stopwatch Sw = new Stopwatch(); Sw.Start(); SrcImg = new TMatrix(SrcBmp.Width, SrcBmp.Height, SrcBmpData.Stride, (int)IP_DEPTH.IP_DEPTH_8U, 3, (byte *)SrcBmpData.Scan0); DestImg = new TMatrix(DstBmp.Width, DstBmp.Height, DstBmpData.Stride, (int)IP_DEPTH.IP_DEPTH_8U, 3, (byte *)DstBmpData.Scan0); TMatrix *Dest = null; MatchTemplate(ref DestImg, ref SrcImg, ref Dest); MinMaxLoc(ref *Dest, ref Min_PosX, ref Min_PosY, ref Max_PosX, ref Max_PosY); IP_FreeMatrix(&Dest); SrcBmp.UnlockBits(SrcBmpData); DstBmp.UnlockBits(DstBmpData); Pen P = new Pen(Color.Red); Graphics G = Graphics.FromImage(DstBmp); G.DrawRectangle(P, new Rectangle(Min_PosX, Min_PosY, SrcImg.Width, SrcImg.Height)); P.Dispose(); G.Dispose(); LblInfo.Text = "Image size: " + PicSrc.Image.Width.ToString() + " X " + PicSrc.Image.Height.ToString() + "\nAlgorithm processing time " + Sw.ElapsedMilliseconds.ToString() + " ms"; PicDest.Refresh(); }
private void CmdProcess_Click(object sender, EventArgs e) { Stopwatch Sw = new Stopwatch(); Sw.Start(); DCT_Denoising(ref SrcImg, ref DestImg, SigmaC.Value * 0.1f); Sw.Stop(); LblInfo.Text = "Algorithm processing time: " + Sw.ElapsedMilliseconds.ToString() + " ms"; PicDest.Refresh(); }
private void ShowHazeRemovalResult() { Busy = true; Bitmap SrcB = (Bitmap)PicSrc.Image; Bitmap DstB = (Bitmap)PicDest.Image; BitmapData SrcBmpData = SrcB.LockBits(new Rectangle(0, 0, SrcB.Width, SrcB.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); BitmapData DstBmpData = DstB.LockBits(new Rectangle(0, 0, DstB.Width, DstB.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); Stopwatch Sw = new Stopwatch(); Sw.Start(); HazeRemovalUseDarkChannelPrior((byte *)SrcBmpData.Scan0, (byte *)DstBmpData.Scan0, SrcBmpData.Width, SrcBmpData.Height, SrcBmpData.Stride, BlockSize.Value, GuideBlockSize.Value, MaxAtom.Value, Omega.Value * 0.01f, Epsilon.Value * 0.001f, T0.Value * 0.01f); Sw.Stop(); this.Text = Sw.ElapsedMilliseconds.ToString(); SrcB.UnlockBits(SrcBmpData); DstB.UnlockBits(DstBmpData); PicDest.Invalidate(); Busy = false; }
void ShowResult() { BitmapData SrcBmpData = SrcBmp.LockBits(new Rectangle(0, 0, SrcBmp.Width, SrcBmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); BitmapData DstBmpData = DstBmp.LockBits(new Rectangle(0, 0, DstBmp.Width, DstBmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); SrcImg = new TMatrix(SrcBmp.Width, SrcBmp.Height, SrcBmpData.Stride, (int)IP_DEPTH.IP_DEPTH_8U, 3, (byte *)SrcBmpData.Scan0); DestImg = new TMatrix(SrcBmp.Width, SrcBmp.Height, SrcBmpData.Stride, (int)IP_DEPTH.IP_DEPTH_8U, 3, (byte *)DstBmpData.Scan0); Stopwatch Sw = new Stopwatch(); Sw.Start(); SelectiveBlur(ref SrcImg, ref DestImg, Radius.Value, Threshold.Value, EdgeMode.Tile); LblInfo.Text = "Image size: " + PicSrc.Image.Width.ToString() + " X " + PicSrc.Image.Height.ToString() + "\nAlgorithm processing time " + Sw.ElapsedMilliseconds.ToString() + " ms"; SrcBmp.UnlockBits(SrcBmpData); DstBmp.UnlockBits(DstBmpData); PicDest.Refresh(); }
private void CmdDeal_Click(object sender, EventArgs e) { BitmapData SrcBmpData = SrcBmp.LockBits(new Rectangle(0, 0, SrcBmp.Width, SrcBmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); BitmapData DstBmpData = DstBmp.LockBits(new Rectangle(0, 0, DstBmp.Width, DstBmp.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); Stopwatch Sw = new Stopwatch(); Sw.Start(); SrcImg = new TMatrix(SrcBmp.Width, SrcBmp.Height, SrcBmpData.Stride, (int)IP_DEPTH.IP_DEPTH_8U, 3, (byte *)SrcBmpData.Scan0); DestImg = new TMatrix(DstBmp.Width, DstBmp.Height, DstBmpData.Stride, (int)IP_DEPTH.IP_DEPTH_8U, 3, (byte *)DstBmpData.Scan0); ImageQuilting(ref SrcImg, ref DestImg, TileSize.Value, TileSize.Value, Overlap.Value, Overlap.Value); SrcBmp.UnlockBits(SrcBmpData); DstBmp.UnlockBits(DstBmpData); LblInfo.Text = "Image size: " + PicSrc.Image.Width.ToString() + " X " + PicSrc.Image.Height.ToString() + "\nAlgorithm processing time " + Sw.ElapsedMilliseconds.ToString() + " ms"; PicDest.Refresh(); }
private void ShowAdaptHistEqualizeResult() { Busy = true; Bitmap SrcB = (Bitmap)PicSrc.Image; Bitmap DstB = (Bitmap)PicDest.Image; BitmapData SrcBmpData = SrcB.LockBits(new Rectangle(0, 0, SrcB.Width, SrcB.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); BitmapData DstBmpData = DstB.LockBits(new Rectangle(0, 0, DstB.Width, DstB.Height), ImageLockMode.ReadWrite, PixelFormat.Format24bppRgb); CopyMemory((byte *)DstBmpData.Scan0, (byte *)SrcBmpData.Scan0, SrcBmpData.Stride * SrcBmpData.Height); Stopwatch Sw = new Stopwatch(); Sw.Start(); AdaptHistEqualize((byte *)DstBmpData.Scan0, SrcBmpData.Width, SrcBmpData.Height, SrcBmpData.Stride, TileX.Value, TileY.Value, ClipLimit.Value * 0.001f, SepChannel.Checked); Sw.Stop(); this.Text = Sw.ElapsedMilliseconds.ToString(); SrcB.UnlockBits(SrcBmpData); DstB.UnlockBits(DstBmpData); PicDest.Invalidate(); Application.DoEvents(); Busy = false; }