Mat twoThreshholdConnect(Mat img, int highThresh, int lowThresh)
{
Mat oriImage = img;
Mat maxImage = Mat(img.size(), CV_8UC1, Scalar(0));
Mat medImage = Mat(img.size(), CV_8UC1, Scalar(0));
Mat finalImage = Mat(img.size(), CV_8UC1, Scalar(0)); ;
int thisHighThresh = highThresh;
int thisLowThresh = lowThresh;
int width = oriImage.cols;
int hight = oriImage.rows;
for(int i = 0; i < width;i++)
for (int j = 0; j < hight; j++)
{
if (oriImage.at<uchar>(j, i) > thisHighThresh)
maxImage.at<uchar>(j, i) = oriImage.at<uchar>(j, i);
else if(oriImage.at<uchar>(j, i) > thisLowThresh)
medImage.at<uchar>(j, i) = oriImage.at<uchar>(j, i);
}
for (int i = 1; i < width-1; i++)
for (int j = 1; j < hight-1; j++)
{
if (medImage.at<uchar>(j, i) != 0)
{
for(int k=i-1;k<i+2;k++)
for (int m = j - 1; m < j + 2; m++)
{
if (maxImage.at<uchar>(m, k) != 0)
maxImage.at<uchar>(m, k) = medImage.at<uchar>(j, i);
}
}
}
for (int i = 1; i < width - 1; i++)
for (int j = 1; j < hight - 1; j++)
{
if (maxImage.at<uchar>(j, i) != 0)
finalImage.at<uchar>(j, i) = 255;
}
return finalImage;
}