حالا باید به ترتیب از سمت راست شروع کنیم
private void Search_right(int pixel, int row , int col, ref bool[,] searched)
{
Point P1, P2;
/// mikhaym bebinim chan ta be rast raftim chan ta be chap ,... ta badan betonim
/// motevajeh shim in 4 goosh hast ya na
int Rast=0, Chap=0, Paeen=0, Bala = 0;
int i = row , j = col;
P1 = new Point(row,col);
int ekhtel = Ekhtelaf(pixel);
for (; (j < bmp.Width && (bmp.GetPixel(j, i).ToArgb() == pixel || (bmp.GetPixel(j, i).ToArgb() - pixel <= ekhtel && bmp.GetPixel(j, i).ToArgb() - pixel >=0 ))); j++)
{
Rast++;
searched[i, j] = true;
}
// chon dar halgheye bala yeki ezafi mire jolo vase inke bebine be payan reside
j--;
Paeen = Search_Down(pixel ,ref i ,ref j , ref searched);
P2 = new Point(i, j);
Chap = Search_Left(pixel,ref i,ref j, ref searched);
Bala = Search_UP(pixel, ref i, ref j, ref searched);
int avg = (Bala + Paeen + Chap + Rast) / 4;
if (avg >= 9 && Bala >= 9 && Paeen >= 9 && Chap >= 9 && Rast >= 9)
{
int avg_amodi, avg_ofoghi;
avg_amodi = (Bala + Paeen) / 2;
avg_ofoghi = (Chap + Rast) / 2;
if (((avg_amodi - Bala) >= -50 && (avg_amodi - Bala) <= 50) && ((avg_amodi - Paeen) >= -50 && (avg_amodi - Paeen) <= 50) && ((avg_ofoghi - Chap) >= -50 && (avg_ofoghi - Chap) <= 50) && ((avg_ofoghi - Rast) >= -50 && (avg_ofoghi - Rast) <= 50))
{
sbp_point[Count_Rectangle] = new SBP_Point();
sbp_point[Count_Rectangle].Point_Start = P1;
sbp_point[Count_Rectangle].Point_Finish = P2;
Count_Rectangle++;
/// dakhele 4gosh niz bayad begooem ke digar search nashavad
Searched_into_rect(P1, P2, ref searched);
}
}
}
private int Search_Down(int pixel, ref int row,ref int col, ref bool[,] searched)
{
int paeen = 0;
int i = row, j = col;
int ekhtel = Ekhtelaf(pixel);
try
{
for (; (i < bmp.Height && (bmp.GetPixel(j, i).ToArgb()) == pixel || (bmp.GetPixel(j, i).ToArgb() - pixel <= ekhtel && bmp.GetPixel(j, i).ToArgb() - pixel >= 0)); i++)
{
paeen++;
searched[i, j] = true;
}
}
catch (Exception ex) { }
finally
{
// chon dar halgheye bala yeki ezafi mire jolo vase inke bebine be payan reside
i--;
row = i;
col = j;
}
return paeen;
}
private int Search_Left(int pixel,ref int row, ref int col, ref bool[,] searched)
{
int chap = 0;
int i = row, j = col;
int ekhtel = Ekhtelaf(pixel);
try
{
for (; (j > 0 && (bmp.GetPixel(j, i).ToArgb()) == pixel || (bmp.GetPixel(j, i).ToArgb() - pixel <= ekhtel && bmp.GetPixel(j, i).ToArgb() - pixel >= 0)); j--)
{
chap++;
searched[i, j] = true;
}
}
catch (Exception ex)
{
}
finally
{
// chon dar halgheye bala yeki ezafi mire jolo vase inke bebine be payan reside
j++;
row = i;
col = j;
}
return chap;
}
private int Search_UP(int pixel,ref int row,ref int col, ref bool[,] searched)
{
int bala = 0;
int i = row, j = col;
int ekhtel = Ekhtelaf(pixel);
try
{
for (; (i > 0 && ((bmp.GetPixel(j, i).ToArgb()) == pixel) || (bmp.GetPixel(j, i).ToArgb() - pixel <= ekhtel && bmp.GetPixel(j, i).ToArgb() - pixel >= 0)); i--)
{
bala++;
searched[i, j] = true;
}
}
catch (Exception ex)
{
}
finally
{
// chon dar halgheye bala yeki ezafi mire jolo vase inke bebine be payan reside
i++;
row = i;
col = j;
}
return bala;
}