栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

图像处理之池化

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

图像处理之池化

平均池化与最大池化
问题描述:将彩色图像进行平均池化与最大池化

代码如下(示例):

#include 
#include 
#include 

// average pooling
cv::Mat average_pooling(cv::Mat img) {
    int width = img.cols;
    int height = img.cols;
    int channel = img.channels();
    int win_size = 8;
    int val = 0;

    cv::Mat new_image = cv::Mat::zeros(height, width, CV_8UC3);

    for (int i = 0; i < height; i += win_size)
    {
        for (int j = 0; j < width; j += win_size)
        {
            for (int c = 0; c < channel; c++)
            {
                val = 0;
                for (int di = 0; di < win_size; di++)
                {
                    for (int dj = 0; dj < win_size; dj++)
                    {
//                        val += (double)img.at(i + di, j + dj)[c];  // 平均池化
                        val = fmax(img.at(i + di, j + dj)[c], val);  // 最大池化
                    }
                }
//                val /= (win_size * win_size);    // 平均池化
                for (int di = 0; di < win_size; di++)
                {
                    for (int dj = 0; dj < win_size; dj++)
                    {
                        new_image.at(i + di, j + dj)[c] = (uchar)val;
                    }
                }
            }
        }
    }

    return new_image;
}

int main(){
    // read image
    cv::Mat img = cv::imread("../imori.jpg", cv::IMREAD_COLOR);

    // average pooling
    cv::Mat new_image = average_pooling(img);

//    cv::imwrite("../1-10/imori1.jpg", new_image); // 平均池化
//    cv::imshow("imori1", new_image);              // 平均池化
    cv::imwrite("../1-10/imori2.jpg", new_image);
    cv::imshow("imori2", new_image);
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}
 

输入图像 (imori.jpg)平均池化图像 (imori1.jpg)最大池化图像 (imori2.jpg)
平均池化与最大池化

将图片使用均等大小网格分割,并求网格内代表值的操作称为池化(Pooling)。
平均池化是将图片按照固定大小网格分割,网格内的像素值取网格内所有像素的平均值的池化操作。

池化操作是**卷积神经网络(Convolutional Neural Network)**中重要的图像处理方式。平均池化按照下式定义:
v = 1 ∣ R ∣   ∑ i = 1 R   v i v=frac{1}{|R|} sumlimits_{i=1}^R v_i v=∣R∣1​ i=1∑R​ vi​

最大池化是将图片按照固定大小网格分割,网格内的像素值取网格内所有像素的最大值的池化操作。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/767662.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号