上面你可以找到原始图像。我拍摄这张照片,构建了6级的拉普拉斯金字塔并重新构建它,这就是我得到的:
人们可以注意到重建的图像是比特更清晰的"比原来的。有人能解释我为什么吗?
请找到我在下面使用的代码:
Mat ** LaplacianPyramid::buildLaplacianPyramid(const Mat& originalImage, int levels) {
Mat ** laplacianPyramid = new Mat*[levels];
Mat * currentImg = new Mat(originalImage);
for (int l = 0; l<levels - 1; l++) {
Mat * up = new Mat;
Mat * down = new Mat;
pyrDown(*currentImg, *down);
pyrUp(*down, *up, currentImg -> size());
Mat * lap = new Mat((*currentImg) - (*up));
laplacianPyramid[l] = lap;
currentImg->release();
up->release();
delete currentImg;
delete up;
currentImg = down;
}
laplacianPyramid[levels - 1] = currentImg;
return laplacianPyramid;
}
对于重建,我一直在使用以下代码段:
Mat * LaplacianPyramid::reconstructImage() {
Mat * currentImg = ( (_laplacianPyramid[_levels - 1]));
for (int l = _levels - 2; l >= 0; l--) {
Mat up;
pyrUp(*currentImg, up, _laplacianPyramid[l] ->size());
delete currentImg;
currentImg =new Mat( up + (*_laplacianPyramid[l]));
}
return currentImg;
}
是否有可能获得精确损失重建?谢谢!
答案 0 :(得分:0)
&#34;光泽&#34;实际上,你所说的是失去解决方案。 pyrDown函数向下采样原始图像到较低的分辨率。当调用Pyrup时,尝试使用一些插值技术重建丢失的信息。并且某个像素的插值基于相邻像素。