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. 第1章 Python 数字图像处理(DIP) --绪论

    Python 数字图像处理 关于本专栏 此专栏为 Python 数字图像处理(DIP)(冈萨雷斯版),专栏里文章的内容都是来自书里,全部手打,非OCR,因为很多公式,都是用LaTex输入,力求更好看的 ...

  2. 基于python的数字图像处理--学习笔记(三)

    基于python的数字图像处理--学习笔记(三) 前言 一.灰度拉伸 二.幂律(伽马)变换 三.对数变换 前言 进入冈萨雷斯的第三章内容,并用python实现功能.我更改了代码源,之前找到太烂了,代码 ...

  3. 数字图像处理——实验一 Python中数字图像处理的基本操作

    数字图像处理--实验一 Python中数字图像处理的基本操作 一.实验目的 二.实验主要仪器设备 三.实验原理 3.1 数字图像的表示和类别 3.2 opencv-python图像文件格式 四.实验内 ...

  4. 第2章 Python 数字图像处理(DIP) --数字图像基础5 -- 算术运算、集合、几何变换、傅里叶变换等

    目录 数字图像处理所有的基本数字工具介绍 算术运算 集合运算和逻辑运算 空间运算 向量与矩阵运算 图像变换 图像和随机变量 数字图像处理所有的基本数字工具介绍 算术运算 # 相加 img_ori = ...

  5. Python实现数字图像处理之5种彩色空间转换(单图+多图+视频)

    本文主要运用用Python代码实现了5种彩色空间之间的转换! 具体而言,包括: 1)RGB → CMY: 2)  CMY → RGB: 3)  RGB → HSI: 4)  HSI → RGB: 5) ...

  6. Python实现数字图像处理经典算法之256色转灰度图

    算法介绍 256色转灰度图是数字图像处理经典算法中最简单的算法之一 1.彩色数字图像中的颜色有红.绿.蓝三种颜色混合而成,对应的像素颜色通道就是RGB(R,G,B),R.G.B数值共有256个数值,也 ...

  7. python完成数字图像处理小练习

    之前简单学习了python后着迷于anaconda里各种完善丰富的包和jupyter notebook这种友好的ide.正好有一份数字图像处理的小练习,若从零开始用matlab实在折腾,决定用pyth ...

  8. 【python】数字图像处理课程设计:彩色图像复原

    先上效果图,对于jpg图片,在一分钟内处理完成,以下分别是原始图片,彩色图像,自动裁剪等优化后的图像. 对于tif图片,在三分钟内处理完成,以下分别是原始图片,彩色图像,裁剪等优化后的图像.(原图为6 ...

  9. 第6章 Python 数字图像处理(DIP) - 彩色图像处理2 - 灰度分层(灰度分割)和彩色编码,灰度值到彩色变换,Gray to RGB

    第6章主要讲的是彩色图像处理,一些彩色模型如RGB,CMK,CMYK,HSI等色彩模型:彩色模型的变换关系:还包含由灰度图像怎样处理成假彩色图像:使用彩色分割图像等.本章比较少理论还有变换的描述,主要 ...

  10. 第5章 Python 数字图像处理(DIP) - 图像复原与重建1 - 高斯噪声

    本章主要讲图像复原与重建,首先是了解一下各种噪声的特点与模型,还有形成的方法.一些重点的噪声,如高斯噪声,均匀噪声,伽马噪声,指数噪声,还有椒盐噪声等. 本章主要的噪声研究方法主要是加性噪声. 标题 ...

最新文章

  1. 如何编辑PDF文件,怎么修改PDF中的文字
  2. 保鲜、保生,生鲜电商的两码事
  3. Nginx教程系列五:实现负载均衡配置
  4. everedit选择_EverEdit(文本编辑器)
  5. C++error:找不到指定文件
  6. JS正则表达式常见场景下的用法总结
  7. Oracle 日常巡检——数据库基本情况检查
  8. Python相关的考试和认证
  9. Reactive(1) 从响应式编程到好莱坞
  10. iOS开发证书和配置文件的使用
  11. “我不是个优秀的 Web 开发人员,我只是擅长搜索谷歌”
  12. 蓝桥杯 ALGO-71 算法训练 比较字符串
  13. 反射 java 例子 get_Java反射实例
  14. A002-185-2531
  15. av终结者特征及防治方法
  16. wincc mysql_Wincc操作数据库SQLSERVER
  17. halcon代码LAWS纹理滤波
  18. 编写一个能将给定非负整数列表中的数字排列成最大数字的函数。
  19. GS认证、VDE认证、CE认证简单介绍
  20. html怎么在表格中加虚线,html设置虚线边框的方法详细介绍

热门文章

  1. java连接rabbitmq_没用过消息队列?一文带你体验RabbitMQ收发消息
  2. 使用Throwable获得栈信息
  3. Unity FixedUpdate 与 Update 的线程关系实验
  4. 在leangoo里怎么复制删除列表?
  5. 快速批量导入庞大数据到SQL SERVER数据库(ADO.NET)
  6. 【VMware虚拟化解决方案】VMware VSphere 5.1配置篇
  7. VMware vSphere@cloudstack基本功能测试报告
  8. catia高级技巧54条1.0
  9. 2.4 Add a dynamic map
  10. Ubuntu下利用JDK的Keytool配置Tomcat7.0的SSL协议(单向认证简易版)