diff --git a/IRImageProcessing/Source.cpp b/IRImageProcessing/Source.cpp index fbb00d3..4c2fb44 100644 --- a/IRImageProcessing/Source.cpp +++ b/IRImageProcessing/Source.cpp @@ -116,6 +116,13 @@ return bifurcationPoints; } +cv::Mat inverseImage(const cv::Mat& src) +{ + cv::Mat invertedImage; + invertedImage = 255 - src; + return invertedImage; +} + void BinaryProcessing(const cv::Mat& ori, const cv::Mat& src, std::string dirName) { // ��Â̓�l�� @@ -129,34 +136,24 @@ cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); // �����t�H���W�[�ϊ� cv::Mat morphologyImage; - //cv::morphologyEx(adaptiveBinaryImage, morphologyImage, cv::MORPH_OPEN, element); cv::morphologyEx(adaptiveBinaryImage, morphologyImage, cv::MORPH_OPEN, element); - //cv::dilate(binaryImage, dilatedImage, cv::Mat(), cv::Point(-1, -1), 1); // 1��c�������܂��B�K�v�ɉ����Ă��̒l��ύX���Ă��������B - + cv::Mat borderRemoved = morphologyImage(cv::Rect(10, 10, morphologyImage.cols - 20, morphologyImage.rows - 20)); cv::Mat borderAdded; cv::copyMakeBorder(borderRemoved, borderAdded, 10, 10, 10, 10, cv::BORDER_CONSTANT, 255); cv::Mat invImage; - //cv::bitwise_not(morphologyImage, invImage); - //cv::bitwise_not(dilatedImage, invImage); - // �א��� cv::Mat thinnedImage; thinning(morphologyImage, thinnedImage); cv::Mat kernel1 = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(3, 3)); - //cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5)); - //cv::dilate(thinnedImage, thinnedImage, kernel1, cv::Point(-1, -1), 1); - // �����t�H���W�[�ϊ� - - //cv::morphologyEx(thinnedImage, thinnedImage, cv::MORPH_CLOSE, element); // �א����摜���ēx�c�� cv::Mat outputImage; cv::Mat kernel = cv::getStructuringElement(cv::MORPH_RECT, cv::Size(5, 5)); cv::dilate(thinnedImage, outputImage, kernel, cv::Point(-1, -1), 2); - //cv::bitwise_not(thinnedImage, thinnedImage); + @@ -192,11 +189,11 @@ void WindowProcessing(const cv::Mat& src16U, cv::Mat& dst8U, double limit, std::string dirName) { - double amin, amax; - cv::minMaxLoc(src16U, &amin, &amax); // �摜�̍ŏ��l�ƍő�l���擾 + cv::minMaxLoc(src16U, &amin, &amax); - double scale = limit / (amax - amin); // �X�P�[�����O�W�����v�Z + // �X�P�[�����O�W�����v�Z + double scale = limit / (amax - amin); src16U.convertTo(dst8U, CV_8U, scale, -amin * scale); //cv::imwrite(dirName + "/Windowed_2.png", dst8U); @@ -206,10 +203,10 @@ { int division = 16; - int ksize = 17; - double sigma = 5; + int ksize = 51; + double sigma = 18; double theta; - double lambda = 16; + double lambda = 36; double gamma = 1; double psi = 0; double angle = 0; @@ -277,12 +274,13 @@ + int main() { std::string inputFileName = "trimmed.tif"; // �o�͏��� std::string baseDir = "output/"; - std::string dirBaseName = "sigma5_lambda16"; + std::string dirBaseName = "sigma16_lambda32_"; std::string dirName = baseDir + dirBaseName; @@ -321,14 +319,19 @@ //BinaryProcessing(windowedImage, claheImage, dirName); + cv::Mat inversedClaheImage; + inversedClaheImage = inverseImage(claheImage); + // �K�{�[���t�B���^ - GaborProcessing(windowedImage, claheImage, dirName); + GaborProcessing(windowedImage, inversedClaheImage, dirName); + cv::imwrite(dirName + "/Original.tif", image); cv::imwrite(dirName + "/WindowedImage.png", windowedImage); cv::imwrite(dirName + "/Gaussian.png", gaussinaBlurImage); cv::imwrite(dirName + "/CLAHE.png", claheImage); + cv::imwrite(dirName + "/CLAHEInversion.png", inversedClaheImage); cv::imwrite(dirName + "/CLAHEOtsu.png", claheOtsuBinaryImage); return 0;