Exemplo n.º 1
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);
        }