読者です 読者をやめる 読者になる 読者になる

OpenCVを使ってLenaさんをぼかす2にする。(0008)

OpenCV

Lenaさんぼかしの2回めです。 えせガウスぼかし??

//画面をだすよ
void display(cv::Mat image) {
    //以前の記事をみてね!!
}

int main(int argc, char** argv) {

    //lenaさん登場!!
    cv::Mat lena = cv::imread("lena.jpg");
    //lenaさん白黒レトロ
    cv::cvtColor(lena, lena, CV_RGB2GRAY);

    int cols = lena.cols;
    int rows = lena.rows;

    //lenaさんと同じサイズの画像
    cv::Mat image = cv::Mat::zeros(cols, rows, CV_8UC1);


    uchar up,down,left,right;
    uchar upleft,downleft;
    uchar upright,downright;
    uchar anchor;

    for (int j = 1; j < rows - 1; j++) {
        for (int i = 1; i < cols - 1; i++) {
            up = lena.at<uchar>(j - 1, i);
            down = lena.at<uchar>(j + 1, i);
            left = lena.at<uchar>(j, i - 1);
            right = lena.at<uchar>(j, i + 1);

            upleft = lena.at<uchar>(j - 1, i-1);
            upright = lena.at<uchar>(j - 1, i+1);
            downleft = lena.at<uchar>(j + 1, i-1);
            downright = lena.at<uchar>(j + 1, i+1);
            anchor = lena.at<uchar>(j, i);

                image.at<uchar>(j, i) =
                        cv::saturate_cast<uchar>(
                                anchor*4/16
                                +up*2/16
                                +down*2/16
                                +left*2/16
                                +right*2/16
                                +upleft*1/16
                                +upright*1/16
                                +downleft*1/16
                                +downright*1/16
                );
        }
    }

    //画面に出して!!
    display(image);

}

オリジナル

f:id:treehitsuji:20150118142431p:plain

ぼかし2 (あんまり変わらん!! 目の回りはエッジがシャープ)

f:id:treehitsuji:20150129095129p:plain

参考ぼかし1

f:id:treehitsuji:20150127065845p:plain