將圖切成 3*5 份去掃描,將對比最高的圖顯示出來 (找瑕疵)
圖片:L02.jpg
##ReadMore##
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using AForge.Imaging.Formats; using AForge.Imaging.Filters; using System.Diagnostics; using AForge.Imaging; using AForge.Math; namespace examination_a { public partial class Form1 : Form { Bitmap srcImg, grayImg, cropImg; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { srcImg = ImageDecoder.DecodeFromFile("L02.jpg"); pictureBox1.Image = srcImg; } private void button2_Click(object sender, EventArgs e) { Crop cropFilter = new Crop(new Rectangle(1, 1, 2560, 2560)); Bitmap templateImg = cropFilter.Apply(srcImg); Grayscale grayFilter = new Grayscale(0.2125, 0.7154, 0.0721); grayImg = grayFilter.Apply(templateImg); pictureBox3.Image = grayImg; } private void button3_Click(object sender, EventArgs e) { Graphics g = Graphics.FromImage(srcImg); Stopwatch stopWatch = new Stopwatch(); stopWatch.Reset(); stopWatch.Start(); double maxStdDev = -1; int ii = 0, jj = 0; for (int i = 0; i < 5; i++) { for (int j = 0; j < 3; j++) { Crop matchCropFilter = new Crop(new Rectangle(i * 512, j * 512, 512, 512)); cropImg = matchCropFilter.Apply(grayImg); g.DrawRectangle(new Pen(Color.White), i * 512, j * 512, 512, 512); ImageStatistics stat = new ImageStatistics(cropImg); Histogram gray = stat.Gray; listBox1.Items.Add("(" + i + ", " + j + ") = " + gray.StdDev.ToString()); if (gray.StdDev > maxStdDev) { maxStdDev = gray.StdDev; ii = i; jj = j; } } } g.DrawRectangle(new Pen(Color.Red), ii * 512, jj * 512, 512, 512); textBox2.Text = maxStdDev.ToString(); pictureBox2.Image = srcImg; TimeSpan ts = stopWatch.Elapsed; textBox1.Text = ts.ToString(); } } }
沒有留言:
張貼留言