​

最近做一些图像处理,需要将图像中的一些像素过滤一下,有网友给提了个名词:腐蚀算法。我不是学图像学的,乍一听,觉得很神奇。后来从网上收集了一些VC代码,研究了一下,发现其它也就是那么回事。尤其是腐蚀算法,我在以前的验证码图片去噪声的文章中提到过,只是那是我不知叫什么名词,就从用途出发,叫做“根据周边点数去噪”。腐蚀的原理也一样,就是根据当前点的周边点数(如3X3的,周边就有8个点)来修改当前点的状态的。 

    代码是我从VC代码中转译过来的,注释都沿用了原作者的文字(别说是剽窃,^_^)。唯一改进的地方是,原代码功能只能处理0和255的二值灰度(搞不懂为什么这样,对于250、128这样的都不行,还不如弄成二值灰度,别弄256灰度了),我将之改成了能根据0~255中任意灰度划界的256灰度图像!

    以下是C#代码:


  1[转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值[转]灰度图像的腐蚀算法和细化算法(C#代码)_自定义_02        /**//// <summary>

  2[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03        /// 该函数用于对图像进行腐蚀运算。结构元素为水平方向或垂直方向的三个点,

  3[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03        /// 中间点位于原点;或者由用户自己定义3×3的结构元素。

  4[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03        /// </summary>

  5[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03        /// <param name="dgGrayValue">前后景临界值</param>

  6[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03        /// <param name="nMode">腐蚀方式:0表示水平方向,1垂直方向,2自定义结构元素。</param>

  7[转]灰度图像的腐蚀算法和细化算法(C#代码)_c代码_08        /// <param name="structure"> 自定义的3×3结构元素</param>

  8[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_09        public void ErosionPic(int dgGrayValue, int nMode, bool[,] structure)

  9[转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值[转]灰度图像的腐蚀算法和细化算法(C#代码)_自定义_02        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 10[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            int lWidth = bmpobj.Width;

 11[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            int lHeight = bmpobj.Height;

 12[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            Bitmap newBmp = new Bitmap(lWidth, lHeight);

 13[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

 14[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            int i, j, n, m;            //循环变量

 15[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            Color pixel;    //像素颜色值

 16[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

 17[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            if (nMode == 0)

 18[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22            [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 19[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                //使用水平方向的结构元素进行腐蚀

 20[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                // 由于使用1×3的结构元素,为防止越界,所以不处理最左边和最右边

 21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                // 的两列像素

 22[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                for (j = 0; j < lHeight; j++)

 23[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 24[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                    for (i = 1; i < lWidth - 1; i++)

 25[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                    [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 26[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //目标图像中的当前点先赋成黑色

 27[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        newBmp.SetPixel(i, j, Color.Black);

 28[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

 29[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //如果源图像中当前点自身或者左右有一个点不是黑色,

 30[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //则将目标图像中的当前点赋成白色

 31[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (bmpobj.GetPixel(i - 1, j).R > dgGrayValue ||

 32[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bmpobj.GetPixel(i, j).R > dgGrayValue ||

 33[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bmpobj.GetPixel(i + 1, j).R > dgGrayValue)

 34[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            newBmp.SetPixel(i, j, Color.White);

 35[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                    }

 36[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                }

 37[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44            }

 38[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            else if (nMode == 1)

 39[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22            [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 40[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                //使用垂真方向的结构元素进行腐蚀

 41[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                // 由于使用3×1的结构元素,为防止越界,所以不处理最上边和最下边

 42[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                // 的两行像素

 43[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                for (j = 1; j < lHeight - 1; j++)

 44[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 45[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                    for (i = 0; i < lWidth; i++)

 46[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                    [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 47[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //目标图像中的当前点先赋成黑色

 48[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        newBmp.SetPixel(i, j, Color.Black);

 49[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

 50[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //如果源图像中当前点自身或者左右有一个点不是黑色,

 51[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //则将目标图像中的当前点赋成白色

 52[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (bmpobj.GetPixel(i, j - 1).R > dgGrayValue ||

 53[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bmpobj.GetPixel(i, j).R > dgGrayValue ||

 54[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bmpobj.GetPixel(i, j + 1).R > dgGrayValue)

 55[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            newBmp.SetPixel(i, j, Color.White);

 56[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                    }

 57[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                }

 58[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44            }

 59[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            else

 60[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22            [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 61[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                if (structure.Length != 9)  //检查自定义结构

 62[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                    return;

 63[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                //使用自定义的结构元素进行腐蚀

 64[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                // 由于使用3×3的结构元素,为防止越界,所以不处理最左边和最右边

 65[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                // 的两列像素和最上边和最下边的两列像素

 66[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                for (j = 1; j < lHeight - 1; j++)

 67[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 68[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                    for (i = 1; i < lWidth - 1; i++)

 69[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                    [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 70[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //目标图像中的当前点先赋成黑色

 71[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        newBmp.SetPixel(i, j, Color.Black);

 72[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //如果原图像中对应结构元素中为黑色的那些点中有一个不是黑色,

 73[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //则将目标图像中的当前点赋成白色

 74[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        for (m = 0; m < 3; m++)

 75[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 76[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            for (n = 0; n < 3; n++)

 77[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                            [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 78[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                if (!structure[m, n])

 79[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                    continue;

 80[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                if (bmpobj.GetPixel(i + m - 1, j + n - 1).R > dgGrayValue)

 81[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                                [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

 82[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                    newBmp.SetPixel(i, j, Color.White);

 83[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                    break;

 84[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                                }

 85[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                            }

 86[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                        }

 87[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                    }

 88[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                }

 89[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44            }

 90[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

 91[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            bmpobj = newBmp;

 92[转]灰度图像的腐蚀算法和细化算法(C#代码)_c代码_08        }

 93[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_09

 94[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_09

 95[转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值[转]灰度图像的腐蚀算法和细化算法(C#代码)_自定义_02        /**//// <summary>

 96[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03        /// 该函数用于对图像进行细化运算。要求目标图像为灰度图像

 97[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03        /// </summary>

 98[转]灰度图像的腐蚀算法和细化算法(C#代码)_c代码_08        /// <param name="dgGrayValue"></param>

 99[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_09        public void ThiningPic(int dgGrayValue)

100[转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值[转]灰度图像的腐蚀算法和细化算法(C#代码)_自定义_02        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

101[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            int lWidth = bmpobj.Width;

102[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            int lHeight = bmpobj.Height;

103[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03         //   Bitmap newBmp = new Bitmap(lWidth, lHeight);

104[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

105[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            bool bModified;            //脏标记    

106[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            int i, j, n, m;            //循环变量

107[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            Color pixel;    //像素颜色值

108[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

109[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            //四个条件

110[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            bool bCondition1;

111[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            bool bCondition2;

112[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            bool bCondition3;

113[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            bool bCondition4;

114[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

115[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            int nCount;    //计数器    

116[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            int[,] neighbour = new int[5, 5];    //5×5相邻区域像素值

117[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

118[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

119[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

120[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            bModified = true;

121[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            while (bModified)

122[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22            [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

123[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                bModified = false;

124[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

125[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                //由于使用5×5的结构元素,为防止越界,所以不处理外围的几行和几列像素

126[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                for (j = 2; j < lHeight - 2; j++)

127[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

128[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                    for (i = 2; i < lWidth - 2; i++)

129[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                    [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

130[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        bCondition1 = false;

131[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        bCondition2 = false;

132[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        bCondition3 = false;

133[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        bCondition4 = false;

134[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

135[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (bmpobj.GetPixel(i, j).R > dgGrayValue)  

136[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

137[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if(bmpobj.GetPixel(i, j).R<255)

138[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                bmpobj.SetPixel(i, j, Color.White);

139[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            continue;

140[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                        }

141[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

142[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //获得当前点相邻的5×5区域内像素值,白色用0代表,黑色用1代表

143[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        for (m = 0; m < 5; m++)

144[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

145[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            for (n = 0; n < 5; n++)

146[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                            [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

147[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                neighbour[m, n] = bmpobj.GetPixel(i + m - 2, j + n - 2).R < dgGrayValue ? 1 : 0;

148[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                            }

149[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                        }

150[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

151[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //逐个判断条件。

152[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //判断2<=NZ(P1)<=6

153[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        nCount = neighbour[1, 1] + neighbour[1, 2] + neighbour[1, 3]

154[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                + neighbour[2, 1] + neighbour[2, 3] +

155[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                +neighbour[3, 1] + neighbour[3, 2] + neighbour[3, 3];

156[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (nCount >= 2 && nCount <= 6)

157[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

158[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bCondition1 = true;

159[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                        }

160[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

161[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //判断Z0(P1)=1

162[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        nCount = 0;

163[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (neighbour[1, 2] == 0 && neighbour[1, 1] == 1)

164[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            nCount++;

165[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (neighbour[1, 1] == 0 && neighbour[2, 1] == 1)

166[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            nCount++;

167[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (neighbour[2, 1] == 0 && neighbour[3, 1] == 1)

168[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            nCount++;

169[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (neighbour[3, 1] == 0 && neighbour[3, 2] == 1)

170[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            nCount++;

171[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (neighbour[3, 2] == 0 && neighbour[3, 3] == 1)

172[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            nCount++;

173[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (neighbour[3, 3] == 0 && neighbour[2, 3] == 1)

174[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            nCount++;

175[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (neighbour[2, 3] == 0 && neighbour[1, 3] == 1)

176[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            nCount++;

177[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (neighbour[1, 3] == 0 && neighbour[1, 2] == 1)

178[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            nCount++;

179[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (nCount == 1)

180[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bCondition2 = true;

181[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

182[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //判断P2*P4*P8=0 or Z0(p2)!=1

183[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (neighbour[1, 2] * neighbour[2, 1] * neighbour[2, 3] == 0)

184[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

185[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bCondition3 = true;

186[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                        }

187[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        else

188[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

189[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            nCount = 0;

190[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[0, 2] == 0 && neighbour[0, 1] == 1)

191[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

192[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[0, 1] == 0 && neighbour[1, 1] == 1)

193[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

194[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[1, 1] == 0 && neighbour[2, 1] == 1)

195[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

196[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[2, 1] == 0 && neighbour[2, 2] == 1)

197[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

198[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[2, 2] == 0 && neighbour[2, 3] == 1)

199[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

200[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[2, 3] == 0 && neighbour[1, 3] == 1)

201[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

202[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[1, 3] == 0 && neighbour[0, 3] == 1)

203[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

204[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[0, 3] == 0 && neighbour[0, 2] == 1)

205[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

206[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (nCount != 1)

207[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                bCondition3 = true;

208[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                        }

209[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

210[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        //判断P2*P4*P6=0 or Z0(p4)!=1

211[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (neighbour[1, 2] * neighbour[2, 1] * neighbour[3, 2] == 0)

212[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

213[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bCondition4 = true;

214[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                        }

215[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        else

216[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

217[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            nCount = 0;

218[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[1, 1] == 0 && neighbour[1, 0] == 1)

219[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

220[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[1, 0] == 0 && neighbour[2, 0] == 1)

221[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

222[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[2, 0] == 0 && neighbour[3, 0] == 1)

223[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

224[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[3, 0] == 0 && neighbour[3, 1] == 1)

225[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

226[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[3, 1] == 0 && neighbour[3, 2] == 1)

227[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

228[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[3, 2] == 0 && neighbour[2, 2] == 1)

229[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

230[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[2, 2] == 0 && neighbour[1, 2] == 1)

231[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

232[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (neighbour[1, 2] == 0 && neighbour[1, 1] == 1)

233[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                nCount++;

234[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            if (nCount != 1)

235[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                                bCondition4 = true;

236[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                        }

237[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03

238[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        if (bCondition1 && bCondition2 && bCondition3 && bCondition4)

239[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

240[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bmpobj.SetPixel(i, j, Color.White);

241[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bModified = true;

242[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                        }

243[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                        else

244[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_21[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_22                        [转]灰度图像的腐蚀算法和细化算法(C#代码)_颜色值_12{

245[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03                            bmpobj.SetPixel(i, j, Color.Black);

246[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                        }

247[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                    }

248[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44                }

249[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_44            }

250[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03            // 复制细化后的图像

251[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_03        //    bmpobj = newBmp;

252[转]灰度图像的腐蚀算法和细化算法(C#代码)_c代码_08        }

253[转]灰度图像的腐蚀算法和细化算法(C#代码)_灰度_09