private void button_Decide_Click(object sender, EventArgs e) { // マスク生成 MaskImage = SubImageOps.GetColoredMask(DilatedImage, MaskColor, UnmaskColor); // 画像保存 SaveImages(SaveDir); var resultForm = new Form3(SrcBmp, TargetBmp, MaskImage, MaskColor, UnmaskColor); resultForm.Show(); }
/// <summary> /// 膨張画像DilatedImageを更新する /// </summary> void UpdateDilateImage() { bool isInt; int iteration; isInt = int.TryParse(textBox_Dilate.Text, out iteration); if (isInt && trackBar_Dilate.Minimum <= iteration && iteration <= trackBar_Dilate.Maximum) { DilatedImage = SubImageOps.DilateImage(BlobImage, iteration); } else { iteration = 5; textBox_Dilate.Text = iteration.ToString(); DilatedImage = SubImageOps.DilateImage(BlobImage, iteration); } trackBar_Dilate.Value = int.Parse(textBox_Dilate.Text); }
/// <summary> /// ブロブ処理画像BlobImageを更新する /// </summary> void UpdateBlobImage() { bool isInt; int minArea; isInt = int.TryParse(textBox_Blob.Text, out minArea); if (isInt && trackBar_Blob.Minimum <= minArea && minArea <= trackBar_Blob.Maximum) { BlobImage = SubImageOps.GetImageOmitMinimumNoize(UnionImage, minArea); } else { minArea = 10; textBox_Blob.Text = minArea.ToString(); BlobImage = SubImageOps.GetImageOmitMinimumNoize(UnionImage, minArea); } trackBar_Blob.Value = int.Parse(textBox_Blob.Text); }
/// <summary> /// 2値化画像BinImageを更新する /// </summary> void UpdateBinImage() { bool isByte; byte thr; isByte = byte.TryParse(textBox_Bin.Text, out thr); if (isByte && trackBar_Bin.Minimum <= thr && thr <= trackBar_Bin.Maximum) { BinImages = SubImageOps.Threshold(SubImages, thr); } // もし入力値が異常値だったら閾値128で2値化する else { thr = 128; textBox_Bin.Text = thr.ToString(); BinImages = SubImageOps.Threshold(SubImages, thr); } trackBar_Bin.Value = int.Parse(textBox_Bin.Text); }
/// <summary> /// メディアン画像MedianImageを更新する /// </summary> void UpdateMedianImage() { bool isInt; int ksize; isInt = int.TryParse(textBox_Median.Text, out ksize); if (isInt && trackBar_Median.Minimum <= ksize && ksize <= trackBar_Median.Maximum) { // もしカーネルサイズが3より小さければメディアンを行わない if (ksize < 3) { ksize = 0; textBox_Median.Text = ksize.ToString(); for (int i = 0; i < MedianImages.Length; i++) { MedianImages[i] = new Bitmap(BinImages[i]); } } // もしカーネルサイズが偶数なら奇数に揃える else if (ksize % 2 == 0) { ksize += 1; textBox_Median.Text = ksize.ToString(); MedianImages = SubImageOps.Median(BinImages, ksize); } // カーネルサイズが3以上かつ奇数ならそのまま実行 else { MedianImages = SubImageOps.Median(BinImages, ksize); } } else { ksize = 3; textBox_Median.Text = ksize.ToString(); MedianImages = SubImageOps.Median(BinImages, ksize); } trackBar_Median.Value = int.Parse(textBox_Median.Text); }
private void UpdateImage() { // 2値化 UpdateBinImage(); // メディアン UpdateMedianImage(); // 画像統合 UnionImage = SubImageOps.UnionImages(MedianImages, new bool[6] { true, true, true, false, true, false }); // ブロブ UpdateBlobImage(); // 膨張 UpdateDilateImage(); // 画像表示 pictureBox_Result.Image = DilatedImage; }