码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • python3实现灰度图的双三次插值算法缩放


    场景:
    根据某需求得到大量宽高不一的灰度图,形式为:
    [
    [1,2,3,4]
    [5,6,7,8]
    [9,10,11,12]
    ]
    的二维数组。
    需要对其进行标准化转换为固定大小的尺寸,在此使用双三次插值算法实现,对网上的代码略作修改:
    原博客:
    双三次插值算法详解 含python实现
    在这里感谢这位大佬。

    from PIL import Image
    import numpy as np
    import math
    
    
    # 产生16个像素点不同的权重
    def BiBubic(x):
        x = abs(x)
        if x <= 1:
            return 1 - 2 * (x ** 2) + (x ** 3)
        elif x < 2:
            return 4 - 8 * x + 5 * (x ** 2) - (x ** 3)
        else:
            return 0
    # 双三次插值算法
    # dstH为目标图像的高,dstW为目标图像的宽
    def BiCubic_interpolation(img, dstH, dstW):
        scrH, scrW = img.shape
        # img=np.pad(img,((1,3),(1,3),(0,0)),'constant')
        retimg = np.zeros((dstH, dstW, 3), dtype=np.uint8)
        for i in range(dstH):
            for j in range(dstW):
                scrx = i * (scrH / dstH)
                scry = j * (scrW / dstW)
                x = math.floor(scrx)
                y = math.floor(scry)
                u = scrx - x
                v = scry - y
                tmp = 0
                for ii in range(-1, 2):
                    for jj in range(-1, 2):
                        if x + ii < 0 or y + jj < 0 or x + ii >= scrH or y + jj >= scrW:
                            continue
                        tmp += img[x + ii, y + jj] * BiBubic(ii - u) * BiBubic(jj - v)
                retimg[i, j] = np.clip(tmp, 0, 255)
        return retimg
    
    im_path = 'F:/42.0.png'
    image = np.array(Image.open(im_path))
    print(image.shape[1])
    # 举例:将图片统一转换为256*256的图片
    image2 = BiCubic_interpolation(image, 256, 256)
    image2 = Image.fromarray(image2.astype('uint8')).convert('RGB')
    image2.save('F:/BiCubic_interpolation.jpg')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
  • 相关阅读:
    java毕业设计基于javaweb+mysql数据库实现的校园迎新(新生报道)网站含论文+开题报告
    【软考软件评测师】第二十九章 可靠性可用性测试
    滥用出资人权利的后果是什么
    《Java并发编程的艺术》——并发容器和框架与原子类(笔记)
    一文速学-让神经网络不再神秘,一天速学神经网络基础(六)-基于数值微分的反向传播
    BAT 面试题集合
    redis详解(内部分享版)
    电力物联网全场景安全态势感知解决方案
    代碼隨想錄算法訓練營|第四十六天|完全背包、518. 零钱兑换 II、377. 组合总和 Ⅳ。刷题心得(c++)
    与时俱进,构建符合国有企业特性的全面预算体系
  • 原文地址:https://blog.csdn.net/shuaicenglou3032/article/details/126319885
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号