用Python实现根据角4点进行矩阵二维插值并画出伪彩色图
哈哈,题目取得这么绕,其实就是自己写了一个很渣的类似图像放大的算法。已知矩阵四周的4点,扩展成更大的矩阵,中间的元素值均匀插入,例如:
矩阵:
1 2
3 4
扩展成3x3的:
1 1.5 2
2 2.5 3
3 3.5 4
不说废话,直接上代码:
# -*- coding: utf-8 -*-
"""
蒋方正二维插值算法。
"""
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
from numpy import *
# 一维插值
def yiweichazhi(inputmat):
i = 0
for _ in inputmat:
inputmat[i] = inputmat[0] + (inputmat[-1] - inputmat[0]) * i / (len(inputmat) - 1)
i = i + 1
return inputmat
# 画伪彩色图
def 伪彩色图(zz):
Row = zz.shape[0]
Col = zz.shape[1]
xx, yy = np.meshgrid(np.linspace(0, 10, Col), np.linspace(0, 10, Row)) # 图像xy范围和插值
cmap = matplotlib.cm.jet # 指定colormap
plt.imshow(zz, origin='lower', extent=[xx.min(), xx.max(), yy.min(), yy.max()], cmap=cmap) # 伪彩色图
plt.show()
# 由角4点扩展为插值大矩阵
def 蒋方正插值(a):
# 扩张矩阵 10x10
pointRow = 100 # 插值点数-行
pointCol = 100 # 插值点数-行
aa = np.zeros([pointRow, pointCol], dtype=float)
# 四周点直接赋值
aa[0][0] = a[0][0]
aa[0][-1] = a[0][1]
aa[-1][0] = a[1][0]
aa[-1][-1] = a[1][1]
# 四周先插值
aa[0] = yiweichazhi(aa[0])
aa[-1] = yiweichazhi(aa[-1])
aa[:, 0] = yiweichazhi(aa[:, 0])
aa[:, -1] = yiweichazhi(aa[:, -1])
# 全部插值
for i in range(len(aa)):
aa[i] = yiweichazhi(aa[i])
i = i + 1
return aa
# 未插值前4点矩阵
a = np.array([
[1, 2],
[3, 4]
], dtype=float)
aa = 蒋方正插值(a)
# 打印aa
print(aa, "\n")
# 画图
伪彩色图(aa)
用Python实现根据角4点进行矩阵二维插值并画出伪彩色图的更多相关文章
- 用Python+qrcode库创建一个包含信息的二维码
安装qrcode库和PIL库 在命令行中分别输入pip install qrcode 和pip install pillow 导入库格式如下: import PIL import qrcode 下面以 ...
- 涛哥的Python脚本工具箱之生成带Logo的二维码
近期须要在二维码上加Logo,网上没有找到好用的,于是自己用python写了一个. 须要安装qrcode,PIL库 二维码简称 QR Code(Quick Response Code),学名为高速响应 ...
- PIL:Python Imaging Library(图像处理标准库)和Qrcode:二维码生成
安装PIL Mac或Linux安装命令:sudo easy_install PIL 如果报错:fatal error: 'freetype/fterrors.h' file not found Mac ...
- python 一个函数让你决定你的二维码
今天浏览网页时无意中看到了一个特别有趣的二维码,感觉挺有意思的,回来后自己查了一下,发现挺简单的,就分享一下,挺有意思的.该函数的主要流程就是MyQR库中的myqr.run()函数,将连接转化为二维码 ...
- python练习笔记——用列表推导式生成二维列表
用列表推导式如何生成如下列表:[[1, 2, 3], [4, 5, 6], [7, 8, 9]] inner_list = [] outer_list = [] for i in range(1,10 ...
- python之请求报文对比(假定最多二维字典)
两段请求报文,判断不一样的key和value,只判断d2里和d1不同的值,和全部不同的key ok_req={ "version": "9.0.0", &quo ...
- Python用MyQR生成自定义个性二维码
MyQR是一个能够生成自定义二维码的python第三方库,根据需要能够生成普通二维码.带背景图片的艺术二维码.动态二维码. 1.MyQR安装 安装非常简单,直接用pip install MyQR,需要 ...
- 【算法编程 C++ Python】二维数组查找
题目: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 思路: 最简单:每一行都 ...
- Python 创建本地服务器环境生成二维码
一. 需求 公司要做一个H5手机端适配页面,因技术问题所以H5是外包的,每次前端给我们源码,我们把源码传到服务器让其他人访问看是否存在bug,这个不是很麻烦吗?有人说,可以让前端在他们的服务器上先托管 ...
随机推荐
- mac系统上访问docker容器中的ip配置
使用 mac系统,发现docker没有 docker0网桥,无法直接在宿主机上 访问 容器的ip, 在测试的时候有这种需求,而不是通过-p的方式,可以参考下面的连接,主要就是 修改 setting.j ...
- 破解第一个程序----分析APK文件
反编译APK成功后,在outdir目录下会生成一系列目录与文件. smali:程序所有的反汇编代码: res:程序中所有的资源文件: 如何寻找突破口是分析程序的关键.错误提示一般是指引关键代码的风向标 ...
- 博客同步到CSDN客户端
同步本人博客到CSDN客户端 http://blog.csdn.net/johnnyz1234
- MongoDB not authorized for query - code 13 错误解决办法
跟着教程走完到了鉴权阶段,不加 --auth 登陆正常,但会出现warning :没有鉴权,修改不会生效,此时登陆正常. 但是加上了--auth 启动之后加上密码登陆则无法登陆. 添加用户和鉴权: 先 ...
- 聊聊多线程那一些事儿(task)之 三 异步取消和异步方法
hello,咋们又见面啦,通过前面两篇文章的介绍,对task的创建.运行.阻塞.同步.延续操作等都有了很好的认识和使用,结合实际的场景介绍,这样一来在实际的工作中也能够解决很大一部分的关于多线程的业务 ...
- linux-head、tail、sort、uniq、pstree、ps
1.head 默认查看文件前10行 head -7 /etc/yum.conf -n num -n7代表查看文件前7行 2.tail 默认查看文件的后10行 tail -7 /etc/yum.conf ...
- 「Luogu P2508」[HAOI2008]圆上的整点 解题报告
题面 给定圆的半径,求圆上整点数 这是一道很Nice的数学题!超爱!好吧,由于这道题,我去Study了一下复数(complex number)复杂的数 真棒!!! 有兴趣的戳这里!!!\(\huge ...
- Java程序员必备基础:内部类解析
前言 整理了一下内部类的相关知识,算是比较全,比较基础的,希望大家一起学习进步. 一.什么是内部类? 在Java中,可以将一个类的定义放在另外一个类的定义内部,这就是内部类.内部类本身就是类的一个属性 ...
- Linux学习_菜鸟教程_2
Linux 系统目录 /bin: bin是Binary的缩写,这个目录存放着最经常使用的命令. /boot: 存放启动Linux时的一些核心文件,包括一些连接文件以及镜像文件. /dev : de ...
- Go Web 编程之 响应
概述 上一篇文章中,我们介绍了请求的结构与处理.本文将详细介绍如何响应客户端的请求.其实在前面几篇文章中,我们已经使用过响应的功能--通过http.ResponseWriter发送字符串给客户端. 但 ...