Example #1
0
        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();
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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);
        }
Example #4
0
        /// <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);
        }
Example #5
0
        /// <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);
        }
Example #6
0
        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;
        }