Added createWightMaps function into FeatherBlender (stitching)
This commit is contained in:
@@ -155,6 +155,37 @@ void FeatherBlender::blend(Mat &dst, Mat &dst_mask)
|
||||
}
|
||||
|
||||
|
||||
Rect FeatherBlender::createWeightMaps(const vector<Mat> &masks, const vector<Point> &corners,
|
||||
vector<Mat> &weight_maps)
|
||||
{
|
||||
weight_maps.resize(masks.size());
|
||||
for (size_t i = 0; i < masks.size(); ++i)
|
||||
createWeightMap(masks[i], sharpness_, weight_maps[i]);
|
||||
|
||||
Rect dst_roi = resultRoi(corners, masks);
|
||||
Mat weights_sum(dst_roi.size(), CV_32F);
|
||||
weights_sum.setTo(0);
|
||||
|
||||
for (size_t i = 0; i < weight_maps.size(); ++i)
|
||||
{
|
||||
Rect roi(corners[i].x - dst_roi.x, corners[i].y - dst_roi.y,
|
||||
weight_maps[i].cols, weight_maps[i].rows);
|
||||
weights_sum(roi) += weight_maps[i];
|
||||
}
|
||||
|
||||
for (size_t i = 0; i < weight_maps.size(); ++i)
|
||||
{
|
||||
Rect roi(corners[i].x - dst_roi.x, corners[i].y - dst_roi.y,
|
||||
weight_maps[i].cols, weight_maps[i].rows);
|
||||
Mat tmp = weights_sum(roi);
|
||||
tmp.setTo(1, tmp < numeric_limits<float>::epsilon());
|
||||
divide(weight_maps[i], tmp, weight_maps[i]);
|
||||
}
|
||||
|
||||
return dst_roi;
|
||||
}
|
||||
|
||||
|
||||
MultiBandBlender::MultiBandBlender(int try_gpu, int num_bands)
|
||||
{
|
||||
setNumBands(num_bands);
|
||||
|
Reference in New Issue
Block a user