数字图像处理:图像的相关操作

阵列与矩阵操作

对于下列两个2 X 2的图像:
[ a 11 a 12 a 21 a 22 ] , [ b 11 b 12 b 21 b 22 ] \begin{bmatrix}a_{11}&a_{12}\\a_{21}&a_{22}\end{bmatrix},\quad\begin{bmatrix}b_{11}&b_{12}\\b_{21}&b_{22}\end{bmatrix} [a11a21a12a22],[b11b21b12b22]
阵列相乘的结果为:
[ a 11 b 11 a 12 b 12 a 21 b 21 a 22 b 22 ] \begin{bmatrix}a_{11}b_{11}&a_{12}b_{12}\\a_{21}b_{21}&a_{22}b_{22}\end{bmatrix} [a11b11a21b21a12b12a22b22]
矩阵相乘的结果为:
[ a 11 b 11 + a 12 b 21 a 11 b 12 + a 12 b 22 a 21 b 21 + a 22 b 21 a 22 b 22 + a 22 b 22 ] \begin{bmatrix}a_{11}b_{11}+a_{12}b_{21}&a_{11}b_{12}+a_{12}b_{22}\\a_{21}b_{21}+a_{22}b_{21}&a_{22}b_{22}+a_{22}b_{22}\end{bmatrix} [a11b11+a12b21a21b21+a22b21a11b12+a12b22a22b22+a22b22]

线性操作与非线性操作

设操作 H H H和两个图像 f ( x , y ) f(x,y) f(x,y) g ( x , y ) g(x,y) g(x,y), 如果对于任意常数 a 1 a_1 a1 a 2 a_2 a2
H [ a 1 f ( x , y ) + a 2 g ( x , y ) ] = a 1 H ⋅ f ( x , y ) + a 2 H ⋅ g ( x , y ) H[a_1f(x,y)+a_2g(x,y)]=a_1H·f(x,y)+a_2H·g(x,y) H[a1f(x,y)+a2g(x,y)]=a1Hf(x,y)+a2Hg(x,y)
成立,那么称 H H H是线性操作,否则,称为非线性操作。
线性操作满足两个法则:

  1. 比例性/同质性:若 y = f ( x ) , y=f(x), y=f(x),对于任意 a a a,都有 a ⋅ y = f ( a ⋅ x ) a·y=f(a·x) ay=f(ax)
  2. 叠加性:若 y 1 = f ( x 1 ) , y 2 = f ( x 2 ) y_1=f(x_1),y_2=f(x_2) y1=f(x1),y2=f(x2),则有 y 1 + y 2 = f ( x 1 + x 2 ) y_1+y_2=f(x_1+x_2) y1+y2=f(x1+x2)

比如, y = x y=x y=x为线性操作, y = x + 1 y=x+1 y=x+1为非线性操作。

邻域操作

邻域一般是一个远小于图像尺寸、形状规则的像素块,例如𝟐 × 𝟐 、𝟑 × 𝟑的正方形。
假定 S x y S_{xy} Sxy代表代表图像 𝒇 中以(𝒙, 𝒚)为中心的一个邻域坐标集,邻域
处理在输出图像 𝒈 的相同坐标处生成一个相应的像素,该像素的值由输入图像中坐标 S x y S_{xy} Sxy内的像素经指定操作决定。例如,求均值:
g ( x , y ) = 1 m n ∑ ( r , c ) ∈ S x y f ( r , c ) g(x,y)=\frac{1}{mn}\sum_{(r,c)\in S_{xy}}f(r,c) g(x,y)=mn1(r,c)Sxyf(r,c)
其中, m n mn mn为邻域大小, ( r , c ) (r,c) (r,c)为像素坐标

练习

  1. 编写Python程序,对图像进行加、减、乘、除操作.
    在这里插入图片描述
    在这里插入图片描述
'''
Description: 
Author: Weijian Ma
Date: 2020-09-23 20:29:46
LastEditTime: 2020-09-23 22:38:06
LastEditors: Weijian Ma
'''

import cv2 as cv


img01 = cv.imread("1.png")
img02 = cv.imread("2.png")
img02=cv.resize(img02,(img01.shape[1],img01.shape[0]),interpolation=cv.INTER_CUBIC)
print(img01.shape)
print(img02.shape)


## 加
imgOfAdd = cv.add(img01, img02)
## 减
imgOfSub = cv.subtract(img01, img02)
## 乘
imgOfMul = cv.multiply(img01, img02)
## 除
imgOfDiv = cv.divide(img01, img02)

## 显示图像
cv.imshow("resource1", img01)
cv.imshow("resource2", img02)
cv.imshow("Add", imgOfAdd)
cv.imshow("Sub", imgOfSub)
cv.imshow("Mul", imgOfMul)
cv.imshow("Div", imgOfDiv)

cv.waitKey(0)
cv.destroyAllWindows()

结果:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值