测试 focus stacking

https://github.com/PetteriAimonen/focus-stack
https://github.com/Biomedical-Imaging-Group/EDF-Extended-Depth-of-Field

Helicon Focus 软件 3d重建效果

focus-stack 输出的融合图像

focus-stack 输出的3d渲染图像

仅修改Task_FocusMeasure 后的3d渲染图像

soebel 改laplacian

cpp 复制代码
void Task_FocusMeasure::task()
{
    // Algorithm is based on Tenengrad focus measure from
    // 'Autofocusing Algorithm Selection in Computer Microscopy' by Sun et Al.

    const cv::Mat &input = m_input->img();
    int rows = input.rows;
    int cols = input.cols;
    m_valid_area = m_input->valid_area();

    // Calculate squared gradient magnitude by calculating
    // horizontal and vertical Sobel operator.
    cv::Mat sobel(rows, cols, CV_32F);
    cv::Mat magnitude(rows, cols, CV_32F, cv::Scalar(0));
    cv::Sobel(input, sobel, CV_32FC1, 1, 0);
    cv::accumulateSquare(sobel, magnitude);
    cv::Sobel(input, sobel, CV_32FC1, 0, 1);
    cv::accumulateSquare(sobel, magnitude);
    sobel.release();

    
    //cv::Mat laplacian;
    //cv::Laplacian(input, laplacian, CV_32F);
    //cv::Mat magnitude(rows, cols, CV_32F, cv::Scalar(0));
    //cv::multiply(laplacian, laplacian, magnitude); // squared Laplacian = variance proxy
    //cv::Mat temp;
    //cv::GaussianBlur(magnitude, temp, cv::Size(), 1, 1, cv::BORDER_REFLECT);
   
    ////cv::bilateralFilter(magnitude, temp, 5, 500, 5);
    //cv::medianBlur(temp, temp, 3);
    //magnitude = std::move(temp); 
    m_input.reset();

    magnitude.setTo(0, magnitude < m_threshold);

    if (m_radius > 0)
    {
        int blurwindow = (int)(m_radius * 4) + 1;
        cv::GaussianBlur(magnitude, magnitude, cv::Size(blurwindow, blurwindow), m_radius, m_radius, cv::BORDER_REFLECT);
    }

    cv::sqrt(magnitude, m_result);
}
相关推荐
格林威1 小时前
Baumer相机玻璃制品裂纹自动检测:提高透明材质检测精度的 6 个关键步骤,附 OpenCV+Halcon 实战代码!
人工智能·opencv·视觉检测·材质·工业相机·sdk开发·堡盟相机
wangsir.3 小时前
测试之自动化测试常用函数
python·测试
没有不重的名么1 天前
Multiple Object Tracking as ID Prediction
深度学习·opencv·计算机视觉·目标跟踪
愚者游世1 天前
Opencv知识点大纲
人工智能·opencv·计算机视觉
格林威1 天前
Baumer相机电池极耳对齐度检测:提升叠片工艺精度的 5 个实用方案,附 OpenCV+Halcon 实战代码!
人工智能·opencv·机器学习·计算机视觉·视觉检测·工业相机·堡盟相机
403240731 天前
【Jetson开发避坑】虚拟环境(Conda/Venv)调用系统底层OpenCV与TensorRT的终极指南
人工智能·opencv·conda
格林威1 天前
Baumer相机电机转子偏心检测:实现动平衡预判的 5 个核心方法,附 OpenCV+Halcon 实战代码!
人工智能·深度学习·opencv·机器学习·计算机视觉·视觉检测·工业相机
侯孟禹1 天前
Gemini写的抠图工具
qt·opencv
qwy7152292581631 天前
17-像素点和ROI操作
人工智能·opencv·计算机视觉
茶栀(*´I`*)1 天前
OpenCV实战:从视频读写到高级目标追踪(MeanShift与CamShift详解)
图像处理·opencv·计算机视觉