From 0f36f9a0c030d6290bcbb2e3ae943ac060fb06c5 Mon Sep 17 00:00:00 2001 From: lltcggie Date: Sun, 6 Dec 2015 01:29:04 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=A2=E3=83=AB=E3=83=95=E3=82=A1=E3=83=81?= =?UTF-8?q?=E3=83=A3=E3=83=B3=E3=83=8D=E3=83=AB=E3=82=92=E3=83=90=E3=82=A4?= =?UTF-8?q?=E3=82=AD=E3=83=A5=E3=83=BC=E3=83=93=E3=83=83=E3=82=AF=E8=A3=9C?= =?UTF-8?q?=E9=96=93=E3=81=97=E3=81=9F=E9=9A=9B=E3=81=AE=E3=82=B4=E3=83=9F?= =?UTF-8?q?=E3=81=8C=E6=B6=88=E3=81=88=E3=82=8B=E3=82=88=E3=81=86=E3=81=AB?= =?UTF-8?q?=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- common/waifu2x.cpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/common/waifu2x.cpp b/common/waifu2x.cpp index 039c084..b9c65ad 100644 --- a/common/waifu2x.cpp +++ b/common/waifu2x.cpp @@ -1243,7 +1243,15 @@ Waifu2x::eWaifu2xError Waifu2x::AfterReconstructFloatMatProcess(const cv::Mat &f cv::split(floatim, planes); alpha = planes[3]; - cv::resize(alpha, alpha, image_size, 0.0, 0.0, cv::INTER_CUBIC); + // 拡大したアルファチャンネルの生成 + cv::Mat alpha_linear, alpha_cubic; + cv::resize(alpha, alpha_linear, image_size, 0.0, 0.0, cv::INTER_LINEAR); + cv::resize(alpha, alpha_cubic, image_size, 0.0, 0.0, cv::INTER_CUBIC); + + cv::Mat mask; + cv::threshold(alpha_linear, mask, 0.0, 1.0, cv::THRESH_BINARY); // アルファを線形補間したものを二値化してマスクとして扱う + + alpha = alpha_cubic.mul(mask); // バイキュービック補間で拡大すると、アルファチャンネルの境界付近に(ごく小さな値ながら)ゴミが現れる。それを線形補間マスクで消す } // アルファチャンネルがあったらアルファを付加して、完全透明のピクセルの色を消す(処理の都合上、完全透明のピクセルにも色を付けたから) @@ -1261,6 +1269,12 @@ Waifu2x::eWaifu2xError Waifu2x::AfterReconstructFloatMatProcess(const cv::Mat &f planes[1] = planes[1].mul(mask); planes[2] = planes[2].mul(mask); + { + cv::Mat write_iamge; + mask.convertTo(write_iamge, CV_8U, 255.0); + WriteMat(write_iamge, "test_mask.png"); + } + planes.push_back(alpha); cv::merge(planes, process_image);