Max(const cv::Mat &mat)
{
    float max_var = 0;
    int width = mat.cols;
    int height = mat.rows;

    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {
            float cur_var = mat.at<float>(y, x);
            if (cur_var > max_var)
            {
                max_var = cur_var;
            }
        }
    }
    return max_var;
}

float maxDiff(const cv::Mat &mat1, const cv::Mat &mat2)
{
    float max_diff = 0;
    int width = mat1.cols;
    int height = mat2.rows;

    for (int y = 0; y < height; y++)
    {
        for (int x = 0; x < width; x++)
        {
            float diff = mat1.at<float>(y, x) - mat2.at<float>(y, x);
            if (diff > max_diff)
            {
                max_diff = diff;
            }
        }
    }
    return max_diff;
}

cv::Mat anisotropicDiffusionOMP(const cv::Mat &input_image, const float &delta_t, const float &c, const int &n_iter)
{
    /* initialize image_ad */
    cv::Mat image_ad;
    input_image.copyTo(image_ad);
    for (int i = 0; i < n_iter; i++)
    {
        cv::Mat image_dx, image_dy, image_dxx, image_dxy, image_dyy, image_d2xi, image_d2eta;
        firstDerivativeOmp(image_ad, image_dx, image_dy);
        secondDerivativeOmp(image_ad, image_dxx, image_dxy, image_dyy);
        image_d2xi = derivative_d2I_d2xi(image_ad, image_dx, image_dy, image_dxx, image_dxy, image_dyy);
        image_d2eta = derivative_d2I_d2eta(image_ad, image_dx, image_dy, image_dxx, image_dxy, image_dyy);
        cv::Mat image_ad_updated = update(image_ad, image_d2xi, image_d2eta, delta_t, c);
        image_ad_updated.copyTo(image_ad);
    }
    return image_ad;
}

std::vector<cv::Mat> gradient(const cv::Mat &input_image)
{
    std::vector<cv::Mat> mat_list;
    cv::Mat image_ad = cv::Mat::zeros(input_image.size(), CV_32FC1);

    /* initialize image_ad */
    //input_image.convertTo(image_ad, CV_32FC1, 1.0);
    input_image.copyTo(image_ad);

    cv::Mat image_dx, image_dy;
    firstDerivativeOmp(image_ad, image_dx, image_dy);
    mat_list.push_back(image_dx);
    mat_list.push_back(image_dy);
    return mat_list;
}

std::vector<cv::Mat> gradientSecond(const cv::Mat &input_image)
{
    std::vector<cv::Mat> mat_list;
    cv::Mat image_ad = cv::Mat::zeros(input_image.size(), CV_32FC1);

    /* initialize image_ad */
    input_image.copyTo(image_ad);
    cv::Mat image_dxx, image_dxy, image_dyy;
    secondDerivativeOmp(image_ad, image_dxx, image_dxy, image_dyy);
    mat_list.push_back(image_dxx);
    mat_list.push_back(image_dxy);
    mat_list.push_back(image_dyy);
    return mat_list;
}The Ninjas are ready to take on the final round of the competition.
Guess what? The debut of season 13 of American Ninja Warrior is just two weeks away!
Memorial Day, Monday, May 31, is the big day. The show will hit our TVs at 8 pm EST with the first episode of the Qualifiers.
Right now, at this very moment, we’re sitting in Las Vegas surrounded by the Ninjas who’ve made it to the final round of the competition. (That means this site will be a little quiet this week while we interview competitors!) It’s an odd, but great feeling. The show couldn’t tape here in 2020 and it’s a nice return to the tradition we love. We haven’t seen the course yet for ourselves, but we’re anxious to lay eyes on it.
Stage One runs will start... soon-ish (We can’t be specific). We honestly don’t know what to expect. That means we want to hear your predictions!
What are your predictions for the American Ninja Warrior season 13 National Finals?
We know you haven’t seen anything yet. But that will change soon! We can tell you this is such a great year so far. We can’t wait to see what unfolds in the coming days.
Share your thoughts while things get going out here in Las Vegas!Former Fannie Mae Executive and Industry Veteran Andrew Bon Salle Joins Board of Directors at Polly
Polly, a leading provider of innovative SaaS technology for the mortgage capital markets space, has announced that industry veteran Andrew Bon Salle joined the company’s board of directors. The appointment follows a record year of growth for the company, which recently closed a $37 million Series B funding round.
Polly’s end-to-end technology platform enables mortgage originators to optimize revenue on each loan, reduce costs by automating workflows, and places the power of customized, actionable analytics at their fingertips. Mortgage lenders leverage Polly’s state-of-the-art Product and Pricing Engine (PPE) and Loan Trading Exchange to dynamically price and sell loans in an automated and customizable workflow, which also dramatically reduces mistakes. The company has experienced rapid growth over the past year, processing tens of thousands of lock requests and nearly $4 billion in loans per month.
“Polly is building the next generation suite of capital markets technology, with a unique mix of technical and mortgage banking experience geared toward solving complex challenges that have plagued the industry,” explained Bon Salle. “By breaking old habits and redefining the mortgage process through innovation and modern technology, the team is able to improve the daily lives of mortgage originators and solve pain points across the product management, pricing, and loan sale and securitization journeys in a very unique and forward-thinking way.”
Over the course of his almost three-decade tenure at Fannie Mae, Bon Salle served in various leadership positions, including Executive Vice President of Single-Family Mortgage Business. In that role, he oversaw all Single-Family capital market functions and managed the growth and performance of Fannie Mae’s credit portfolio.
"Polly is focused on reimagining mortgage capital markets, and Andrew fully understands that potential impact with his wealth of knowledge and decades of experience in this space,” said Adam Carmel, Founder and Chief Executive Officer of Polly. “Andrew’s proven leadership will be invaluable as we continue to solve legacy problems for our customers and the industry as a whole. With his passion for innovation and helping companies scale, we are confident that Andrew will help Polly make a tremendous impact in the years to come."
To learn more about Polly’s board of directors, please visit https://polly.io/company.
Polly is transforming the mortgage industry with its modern, data-driven capital markets ecosystem. Lenders trust Polly’s Product and Pricing Engine (PPE), Loan Trading Exchange, Analytics Platform, and Partner Platform to optimize performance from rate lock to loan sale and delivery, increase gain-on-sale execution, automate workflows, and provide actionable data and analytics. Polly was founded in 2019 by a seasoned team of technology and mortgage experts, and is based in San Francisco, California. Please visit www.polly.io to learn more.
CONTACT: Media requests and inquiries:Samantha MacKendrick
smackendrick@polly.io
INDUSTRY KEYWORD: OTHER PROFESSIONAL SERVICES COMMERCIAL BUILDING & REAL ESTATE SOFTWARE CONSTRUCTION & PROPERTY FINANCE BANKING PROFESSIONAL SERVICES TECHNOLOGY
SOURCE: PollyThe off-season shouldn't start until it starts for everyone. Period. Interviewing coaches who are trying to compete for a championship is asinine. 
Hiring great candidates whose seasons are over because your season is also over while other teams in the playoffs have not entered the hiring process yet is also pretty egregious. This is not the thing that is creating parity in the