数字图像处理实验(八):金字塔分割算法

本文介绍了图像金字塔的概念,重点讲解了高斯金字塔和拉普拉斯金字塔的工作原理及其在图像缩小和放大中的应用。高斯金字塔通过高斯滤波和下采样实现图像尺寸减小,而拉普拉斯金字塔则是高斯金字塔的差分,用于图像放大。实验环境涉及OpenCV、Ubuntu和C++,并展示了实验代码。
摘要由CSDN通过智能技术生成

一、实验内容与原理

图像金字塔常用作多分辨率模型。视频图像的多分辨率模型是视频图像处理的重要方法。图像金字塔包括高斯金字塔和拉普拉斯金字塔两种实现形式。

1、高斯金字塔:(向下取样,缩小图像)

高斯金字塔的实现包括两步:高斯低通滤波和下采样。首先利用高斯核对图像进行卷积;然后进行下采样,得到不同尺度下的目标图像。
高斯金字塔工作原理,为了获取层级为i+1层的高斯金字塔图像:
(1)对图像i进行高斯内核卷积
(2)将所有偶数行和列去除
得到的图像即为 i+1层的图像,显而易见,结果图像只有原图的四分之一。通过对输入图像i层(原始图像)不停迭代以上步骤就会得到整个金字塔。同时我们也可以看到,向下取样会逐渐丢失图像的信息。
以上就是对图像的向下取样操作,即缩小图像。

2、拉普拉斯金字塔:(向上取样,放大图像)

拉普拉斯金字塔是建立在高斯金字塔的基础上的,就是高斯金字塔在不同层之间的差分。
拉普拉斯金字塔工作原理:
如果想放大图像,则需要通过向上取样操作得到,具体做法如下:
(1)将图像在每个方向扩大为原来的两倍,新增的行和列以0填充
(2)使用先前同样的内核(乘以4)与放大后的图像卷积,获得 “新增像素”的近似值
得到的图像即为放大后的图像,但是与原来的图像相比会发觉比较模糊,因为在缩放的过程中已经丢失了一些信息,如果想在缩小和放大整个过程中减少信息的丢失,这些数据形成了拉普拉斯金字塔。
也就是说,拉普拉斯金字塔是通过源图像减去先缩小后再放大的图像的一系列图像构成的。

二、实验代码

实验环境:
(1)OpenCV3.4.3
(2)Ubuntu16.04
(3)VS Code
(4)C++

#include <iostream>
#include <opencv2/opencv.hpp>
#include <string>
#include <vector>
#include <math.h>
#include <cmath>
#include <algorithm>

class Exp8{
public:
    Exp8(std::vector<std::string> path){
        for(int i = 0; i < path.size(); i++){
            original_color_image.push_back(cv::imread(path[i]));
            original_gray_image.push_back(color2Gray(original_color_image[i]));
        }
        std::cout<< "初始化结束" << "\n";
        for(int i = 5; i < 10; i = i + 2){
            makeGaussTemplate(i);
            filter_size.push_back(i);
        }
        computerGaussTemplateSum();
        zerosPadding(0);
    }
    // 0 彩色图像转灰度图像
    cv::Mat color2Gray(cv::Mat& src){
        //创建与原图同类型和同大小的矩阵
	    cv::Mat gray_image = cv::Mat::zeros(src.rows, s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值