static bool WangZhangThinningAlg(int x, int y, bool[][] s) { // if (x > 0 && x < s.Length - 2 && y < s[0].Length - 1 && y > 1 && s[x][y])//bounds and 1st condition p1 = 1 // { bool p2 = s[x][y - 1]; bool p3 = s[x + 1][y - 1]; bool p4 = s[x + 1][y]; bool p5 = s[x + 1][y + 1]; bool p6 = s[x][y + 1]; bool p7 = s[x - 1][y + 1]; bool p8 = s[x - 1][y]; bool p9 = s[x - 1][y - 1]; int bp1 = ThinningHelper.NumberOfNonZeroNeighbors(x, y, s); if (bp1 >= 2 && bp1 <= 6) //2nd condition { if ((ThinningHelper.NumberOfZeroToOneTransitionFromP9(x, y, s) == 1) | (p2 == false & p3 == false & p4 == false & p7 == false & p6 == true & p8 == true) | (p4 == false & p5 == false & p6 == false & p9 == false & p8 == true & p2 == true)) { if ((p2 == false & (p8 == false | p4 == false | p6 == false)) | (p4 == false & (p6 == false | p2 == false | p8 == false))) { return(true); } } } // } return(false); }
static bool HilditchThinningAlg(int x, int y, bool[][] s) { bool p2 = s[x][y - 1]; bool p3 = s[x + 1][y - 1]; bool p4 = s[x + 1][y]; bool p5 = s[x + 1][y + 1]; bool p6 = s[x][y + 1]; bool p7 = s[x - 1][y + 1]; bool p8 = s[x - 1][y]; bool p9 = s[x - 1][y - 1]; int bp1 = ThinningHelper.NumberOfNonZeroNeighbors(x, y, s); if (bp1 >= 2 && bp1 <= 6) //2nd condition { if (ThinningHelper.NumberOfZeroToOneTransitionFromP9(x, y, s) == 1) { if (!((p2 && p4) && p8) | (ThinningHelper.NumberOfZeroToOneTransitionFromP9(x, y - 1, s) != 1)) { if (!((p2 && p4) && p6) | (ThinningHelper.NumberOfZeroToOneTransitionFromP9(x + 1, y, s) != 1)) { return(true); } } } } return(false); }
static bool ZhangWangThinningAlg(int x, int y, bool[][] s) { if (x > 0 && x < s.Length - 2 && y < s[0].Length - 1 && y > 1 && s[x][y])//bounds and 1st condition p1 = 1 { bool p2 = s[x][y - 1]; bool p3 = s[x + 1][y - 1]; bool p4 = s[x + 1][y]; bool p5 = s[x + 1][y + 1]; bool p6 = s[x][y + 1]; bool p7 = s[x - 1][y + 1]; bool p8 = s[x - 1][y]; bool p9 = s[x - 1][y - 1]; int bp1 = ThinningHelper.NumberOfNonZeroNeighbors(x, y, s); if (bp1 >= 2 && bp1 <= 6)//2nd condition { if (ThinningHelper.NumberOfZeroToOneTransitionFromP9(x, y, s) == 1) { if (!((p2 && p4) && p8) || s[x][y - 2]) { if (!((p2 && p4) && p6) || s[x + 2][y]) { return(true); } } } } } return(false); }
static bool skuskaAlgThinningAlg(int x, int y, bool[][] s, int stepNo) { bool p2 = s[x][y - 1]; bool p3 = s[x + 1][y - 1]; bool p4 = s[x + 1][y]; bool p5 = s[x + 1][y + 1]; bool p6 = s[x][y + 1]; bool p7 = s[x - 1][y + 1]; bool p8 = s[x - 1][y]; bool p9 = s[x - 1][y - 1]; int bp1 = ThinningHelper.NumberOfNonZeroNeighbors(x, y, s); if (/*!endPoint(x, y, s)*/ bp1 != 1) //2nd condition { if (removePixel(x, y, s)) { if (stepNo == 1) { if (!p2 && p6) { return(true); } } if (stepNo == 2) { if (!p8 && p4) { return(true); } } if (stepNo == 3) { if (!p6 && p2) { return(true); } } if (stepNo == 4) { if (!p4 && p8) { return(true); } } } } return(false); }
static bool KwonWoongKangThinningThinningAlg(int x, int y, bool[][] s, bool even) { bool p2 = s[x][y - 1]; bool p3 = s[x + 1][y - 1]; bool p4 = s[x + 1][y]; bool p5 = s[x + 1][y + 1]; bool p6 = s[x][y + 1]; bool p7 = s[x - 1][y + 1]; bool p8 = s[x - 1][y]; bool p9 = s[x - 1][y - 1]; int bp1 = ThinningHelper.NumberOfNonZeroNeighbors(x, y, s); if (ThinningHelper.NumberOfZeroToOneTransitionFromP9(x, y, s) == 1) { if (even) { if (bp1 >= 3 && bp1 <= 6) { if (!((p2 && p4) && p8)) { if (!((p2 && p6) && p8)) { return(true); } } } } else { if (bp1 >= 2 && bp1 <= 6) { if (!((p2 && p4) && p6)) { if (!((p4 && p6) && p8)) { return(true); } } } } } return(false); }
static bool HybridAlgThinningAlg(int x, int y, bool[][] s, int stepNo) { bool p2 = s[x][y - 1]; bool p3 = s[x + 1][y - 1]; bool p4 = s[x + 1][y]; bool p5 = s[x + 1][y + 1]; bool p6 = s[x][y + 1]; bool p7 = s[x - 1][y + 1]; bool p8 = s[x - 1][y]; bool p9 = s[x - 1][y - 1]; int bp1 = ThinningHelper.NumberOfNonZeroNeighbors(x, y, s); if (bp1 >= 2 && bp1 <= 6) //2nd condition { if (removePixel(x, y, s)) { if (stepNo == 1) { if ((p8 && !p4) | (!p2 && p6) | (!p8 && p4)) { if ((!p2 && p6) | (p2 && !p6) | (!p8 && p4)) { return(true); } } } if (stepNo == 2) { if ((p8 && !p4) | (!p2 && p6) | (!p6 && p2)) { if ((p8 && !p4) | (p2 && !p6) | (!p8 && p4)) { return(true); } } } } } return(false); }
static bool ArabicParallelThinningAlg(int x, int y, bool[][] s, int stepNo) { bool p2 = s[x][y - 1]; bool p3 = s[x + 1][y - 1]; bool p4 = s[x + 1][y]; bool p5 = s[x + 1][y + 1]; bool p6 = s[x][y + 1]; bool p7 = s[x - 1][y + 1]; bool p8 = s[x - 1][y]; bool p9 = s[x - 1][y - 1]; int bp1 = ThinningHelper.NumberOfNonZeroNeighbors(x, y, s); if (bp1 >= 2 && bp1 <= 6) //2nd condition { if (ThinningHelper.NumberOfZeroToOneTransitionFromP9(x, y, s) == 1) { if (stepNo == 1) { if (!((p2 && p4) && p6)) { if (!((p4 && p6) && p8)) { return(true); } } } if (stepNo == 2) { if (!((p2 && p6) && p8)) { if (!((p4 && p6) && p8)) { return(true); } } } if (stepNo == 3) { if (!((p2 && p4) && p8)) { if (!((p2 && p6) && p8)) { return(true); } } } if (stepNo == 4) { if (!((p2 && p4) && p6)) { if (!((p2 && p4) && p8)) { return(true); } } } } } return(false); }
static bool NovelImageThinningAlg(int x, int y, bool[][] s, int stepNo) { bool p2 = s[x][y - 1]; bool p3 = s[x + 1][y - 1]; bool p4 = s[x + 1][y]; bool p5 = s[x + 1][y + 1]; bool p6 = s[x][y + 1]; bool p7 = s[x - 1][y + 1]; bool p8 = s[x - 1][y]; bool p9 = s[x - 1][y - 1]; int bp1 = ThinningHelper.NumberOfNonZeroNeighbors(x, y, s); if (bp1 >= 2 && bp1 <= 6) //2nd condition { if (ThinningHelper.NumberOfZeroToOneTransitionFromP9(x, y, s) == 1) { if (stepNo == 1) { if (!((p3 && p5) && p7)) { if (!((p5 && p7) && p9)) { return(true); } } } if (stepNo == 2) { if (!((p3 && p7) && p9)) { if (!((p5 && p7) && p9)) { return(true); } } } if (stepNo == 3) { if (!((p3 && p5) && p9)) { if (!((p3 && p7) && p9)) { return(true); } } } if (stepNo == 4) { if (!((p3 && p5) && p7)) { if (!((p3 && p5) && p9)) { return(true); } } } if (stepNo == 5) { if ((p2 && p9 && p7) & !p4) { if ((p4 && p5 && p7) & !p2) { if ((p6 && p7 && p9) & !p4) { if ((p5 && p7 && p8) & !p2) { return(true); } } } } } /* * if (stepNo == 1) * if (!((p2 && p4) && p6)) * { * if (!((p4 && p6) && p8)) * { * return true; * } * } * * if (stepNo == 2) * if (!((p2 && p6) && p8)) * { * if (!((p4 && p6) && p8)) * { * return true; * } * } * * if (stepNo == 3) * if (!((p2 && p4) && p8)) * { * if (!((p2 && p6) && p8)) * { * return true; * } * } * * if (stepNo == 4) * if (!((p2 && p4) && p6)) * { * if (!((p2 && p4) && p8)) * { * return true; * } * } * * if (stepNo == 5) * if ((p9 && p8 && p6) & !p3) * { * if ((p3 && p4 && p6) & !p9) * { * if ((p5 && p6 && p8) & !p3) * { * if ((p4 && p6 && p7) & !p9) * { * return true; * } * } * * } * }*/ } } return(false); }