Python代码:数字图像处理(DIP)7.1.2子带编码example7.2
Subband Coding
例子实现的代码如下:
import cv2
import numpy as np
from matplotlib import pyplot as pltdef correl_1D(img, window, direction = 'Row'): m = window.shape[0]img2 = np.zeros(img.shape)if direction == 'Row':img1 = np.zeros([img.shape[0] + m-1, img.shape[1]])filter2d = np.zeros([m, img.shape[1]])img1[(m-1)//2:(img.shape[0]+(m-1)//2),:] = imgfor i in range(img.shape[1]):filter2d[:,i] = windowfor j in range(img.shape[0]):temp = img1[j:j+m, :]img2[j, :] = np.sum(np.multiply(temp, filter2d), 0)if direction == 'Column':img1 = np.zeros([img.shape[0], img.shape[1] + m-1])filter2d = np.zeros([img.shape[0], m])img1[:,(m-1)//2:(img.shape[1]+(m-1)//2)] = imgfor i in range(img.shape[0]):filter2d[i,:] = windowfor j in range(img.shape[1]):temp = img1[:, j:j+m]img2[:, j] = np.sum(np.multiply(temp, filter2d), 1)return img2 def Downsampler2d(img, direction = 'Row', factor=2):#默认下采样因子为 2factor = int(factor)m = img.shape[0]n = img.shape[1]if direction == 'Row':newimg = np.zeros([int(m / factor), n])for i in range(newimg.shape[0]):newimg[i,:] = img[factor*i, :]if direction == 'Column':newimg = np.zeros([m, int(n / factor)])for i in range(newimg.shape[1]):newimg[:,i] = img[:, factor*i]return newimgdef Orthonormal_filter(g0):K = len(g0)g1 = np.zeros([K,])h0 = np.zeros([K,])h1 = np.zeros([K,])for n in range(K):g1[n] = (-1)**n * g0[K - 1 - n]h0[n] = g0[K - 1 - n]h1[n] = g1[K - 1 - n]return (g1, h0, h1)g0 = np.array([0.23037781, 0.71484657, 0.63088076, -0.02798376,-0.18703481, 0.03084138, 0.03288301, -0.01059740])(g1,h0,h1) = Orthonormal_filter(g0)
img = cv2.imread('original.jpg',0)
img_1 = correl_1D(img, h0, 'Row')
img_1 = Downsampler2d(img_1,'Row')
#近似子带
img_a = correl_1D(img_1, h0, 'Column')
img_a = Downsampler2d(img_a,'Column')
plt.imsave('subband_approximation.jpg', img_a, cmap='gray')
#垂直细节子带
img_c = correl_1D(img_1, h1, 'Column')
img_c = Downsampler2d(img_c,'Column')
plt.imsave('subband_vertical detail.jpg', img_c, cmap='gray')
#水平细节子带
img_2 = correl_1D(img, h1, 'Row')
img_2 = Downsampler2d(img_2,'Row')
img_b = correl_1D(img_2, h0, 'Column')
img_b = Downsampler2d(img_b,'Column')
plt.imsave('subband_horizontal detail.jpg', img_b, cmap='gray')
#对角线细节子带
img_d = correl_1D(img_2, h1, 'Column')
img_d = Downsampler2d(img_d,'Column')
plt.imsave('subband_diagonal detail.jpg', img_d, cmap='gray')
- 这里的卷积函数和下采样函数都是一维且带有方向的
结果如下:
原图
近似子带
水平细节子带
垂直细节子带
对角线细节子带
Python代码:数字图像处理(DIP)7.1.2子带编码example7.2相关推荐
- 第1章 Python 数字图像处理(DIP) --绪论
Python 数字图像处理 关于本专栏 此专栏为 Python 数字图像处理(DIP)(冈萨雷斯版),专栏里文章的内容都是来自书里,全部手打,非OCR,因为很多公式,都是用LaTex输入,力求更好看的 ...
- 基于python的数字图像处理--学习笔记(三)
基于python的数字图像处理--学习笔记(三) 前言 一.灰度拉伸 二.幂律(伽马)变换 三.对数变换 前言 进入冈萨雷斯的第三章内容,并用python实现功能.我更改了代码源,之前找到太烂了,代码 ...
- 数字图像处理——实验一 Python中数字图像处理的基本操作
数字图像处理--实验一 Python中数字图像处理的基本操作 一.实验目的 二.实验主要仪器设备 三.实验原理 3.1 数字图像的表示和类别 3.2 opencv-python图像文件格式 四.实验内 ...
- 第2章 Python 数字图像处理(DIP) --数字图像基础5 -- 算术运算、集合、几何变换、傅里叶变换等
目录 数字图像处理所有的基本数字工具介绍 算术运算 集合运算和逻辑运算 空间运算 向量与矩阵运算 图像变换 图像和随机变量 数字图像处理所有的基本数字工具介绍 算术运算 # 相加 img_ori = ...
- Python实现数字图像处理之5种彩色空间转换(单图+多图+视频)
本文主要运用用Python代码实现了5种彩色空间之间的转换! 具体而言,包括: 1)RGB → CMY: 2) CMY → RGB: 3) RGB → HSI: 4) HSI → RGB: 5) ...
- Python实现数字图像处理经典算法之256色转灰度图
算法介绍 256色转灰度图是数字图像处理经典算法中最简单的算法之一 1.彩色数字图像中的颜色有红.绿.蓝三种颜色混合而成,对应的像素颜色通道就是RGB(R,G,B),R.G.B数值共有256个数值,也 ...
- python完成数字图像处理小练习
之前简单学习了python后着迷于anaconda里各种完善丰富的包和jupyter notebook这种友好的ide.正好有一份数字图像处理的小练习,若从零开始用matlab实在折腾,决定用pyth ...
- 【python】数字图像处理课程设计:彩色图像复原
先上效果图,对于jpg图片,在一分钟内处理完成,以下分别是原始图片,彩色图像,自动裁剪等优化后的图像. 对于tif图片,在三分钟内处理完成,以下分别是原始图片,彩色图像,裁剪等优化后的图像.(原图为6 ...
- 第6章 Python 数字图像处理(DIP) - 彩色图像处理2 - 灰度分层(灰度分割)和彩色编码,灰度值到彩色变换,Gray to RGB
第6章主要讲的是彩色图像处理,一些彩色模型如RGB,CMK,CMYK,HSI等色彩模型:彩色模型的变换关系:还包含由灰度图像怎样处理成假彩色图像:使用彩色分割图像等.本章比较少理论还有变换的描述,主要 ...
- 第5章 Python 数字图像处理(DIP) - 图像复原与重建1 - 高斯噪声
本章主要讲图像复原与重建,首先是了解一下各种噪声的特点与模型,还有形成的方法.一些重点的噪声,如高斯噪声,均匀噪声,伽马噪声,指数噪声,还有椒盐噪声等. 本章主要的噪声研究方法主要是加性噪声. 标题 ...
最新文章
- 如何编辑PDF文件,怎么修改PDF中的文字
- 保鲜、保生,生鲜电商的两码事
- Nginx教程系列五:实现负载均衡配置
- everedit选择_EverEdit(文本编辑器)
- C++error:找不到指定文件
- JS正则表达式常见场景下的用法总结
- Oracle 日常巡检——数据库基本情况检查
- Python相关的考试和认证
- Reactive(1) 从响应式编程到好莱坞
- iOS开发证书和配置文件的使用
- “我不是个优秀的 Web 开发人员,我只是擅长搜索谷歌”
- 蓝桥杯 ALGO-71 算法训练 比较字符串
- 反射 java 例子 get_Java反射实例
- A002-185-2531
- av终结者特征及防治方法
- wincc mysql_Wincc操作数据库SQLSERVER
- halcon代码LAWS纹理滤波
- 编写一个能将给定非负整数列表中的数字排列成最大数字的函数。
- GS认证、VDE认证、CE认证简单介绍
- html怎么在表格中加虚线,html设置虚线边框的方法详细介绍
热门文章
- java连接rabbitmq_没用过消息队列?一文带你体验RabbitMQ收发消息
- 使用Throwable获得栈信息
- Unity FixedUpdate 与 Update 的线程关系实验
- 在leangoo里怎么复制删除列表?
- 快速批量导入庞大数据到SQL SERVER数据库(ADO.NET)
- 【VMware虚拟化解决方案】VMware VSphere 5.1配置篇
- VMware vSphere@cloudstack基本功能测试报告
- catia高级技巧54条1.0
- 2.4 Add a dynamic map
- Ubuntu下利用JDK的Keytool配置Tomcat7.0的SSL协议(单向认证简易版)