mirror of
https://github.com/lltcggie/waifu2x-caffe.git
synced 2025-06-26 13:42:48 +00:00
アルファチャンネルをバイキュービック補間した際のゴミが消えるようにした
This commit is contained in:
parent
4ebf1cc716
commit
0f36f9a0c0
@ -1243,7 +1243,15 @@ Waifu2x::eWaifu2xError Waifu2x::AfterReconstructFloatMatProcess(const cv::Mat &f
|
|||||||
cv::split(floatim, planes);
|
cv::split(floatim, planes);
|
||||||
alpha = planes[3];
|
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[1] = planes[1].mul(mask);
|
||||||
planes[2] = planes[2].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);
|
planes.push_back(alpha);
|
||||||
|
|
||||||
cv::merge(planes, process_image);
|
cv::merge(planes, process_image);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user