3.1图像加法运算

在图像处理过程中,经常需要对图像进行加法运算,可以通过加号运算符“+”对图像进行加法运算,也可以通过 cv2.add()函数对图像进行加法运算

通常情况下,在灰度图像中,像素用8 个比特位(一个字节)来表示,像素值的范围是[0.255]两个像素值在进行加法运算时,求得的和很可能超过 255. 上述两种不同的加法运算方式,对超过 255 的数值的处理方式是不一样的

3.1.1 加号运算符

使用加号运算符“+”对图像 a(像素值为 a)和图像 b(像素值为 b)进行求和运算时遵循以下规则:

a+b = \begin{cases} a+b & a+b <=255 \\ mod(a+b,256) & a+b>255 \end{cases}

式中,mod是取模运算,“ mod(a+b,256)”表示计算“a+b 的和除以 256 取余数”

根据上述规则,两个点进行加法运算时:
1.如果两个图像对应像素值的和小于或等于 255 则直接相加得到运算结果,例如,像
素值 28 和像素值 36 相加,得到计算结果64

2.如果两个图像对应像素值的和大于 255 则将运算结果对 256 取模,例如 255+58=313
大于 255.则计算(255+58)%256=57 得到计算结果 57

当然,上述公式也可以简化为a+b = mod(a+b,256) 在运算时无论相加的和是否大于255都对数值 256 取模

【例 3.1】使用随机数数组模拟灰度图像,观察使用“+”对像素值求和的结果。

分析:通过将数组的数值类型定义为 dtype= np.uint8,可以保证数组值的范围在[0,255] 之间

编码如下:


import numpy as np
img1=np.random.randint(0,256,size=[3,3],dtype=np.uint8)
img2=np.random.randint(0,256,size=[3,3],dtype=np.uint8)
print("img1=\n",img1)
print("img2=\n",img2)
print("img1+img2=\n",img1+img2)


从上述程序可以看到,使用“+”计算两个 256 级灰度图像内像素值的和时,运算结果对 256 取模。

需要注意,本例题中的加法要进行取模,这是由数组的类型 dtype=np.uint8 所规定的

3.1.2 cv2.add()函数

cv2.add()函数可以用来计算图像像素值相加的和,其语法格式为计算结果一 cv2.add(像素值 a,像素值 b)

使用函数 cv2.add()对像素值a 和像素值b 进行求和运算时,会得到像素值对应图像的饱和值(最大值)。
例如,8 位灰度图像的饱和值为 255,因此,在对8 位灰度图的像素值求和时

遵循以下规则

a+b = \begin{cases} a+b & a+b <=255 \\ mod(a+b,256) & a+b>255 \end{cases}

根据上述规则,在 256 级的灰度图像(8 位灰度图)中的两个像素点进行加法运算时·

1.如果两个像素值的和小于或等于 255,则直接相加得到运算结果。例如,像素值 28和
像素值 36 相加,得到计算结果 64
2.如果两个像素值的和大于 255,则将运算结果处理为饱和值 255,例如 255+58=313,大
于 255,则得到计算结果 255

需要注意,函数 cv2.add()中的参数可能有如下三种形式
形式 1:计算结果= cv2.add(图像 1,图像 2),两个参数都是图像,此时参与运算的图像大小和类型必须保持一致
形式 2:计算结果=cv2.add(数值,图像),第1 个参数是数值,第2 个参数是图像,此时将超过图像饱和值的数值处理为饱和值(最大值)
形式 3:计算结果=cv2.add(图像,数值),第1 个参数是图像,第2 个参数是数值,此时将超过图像饱和值的数值处理为饱和值(最大值)

【例 3.2】使用随机数组模拟灰度图像,观察函数 cv2.add() 对像素值求和的结果

根据题目要求,编写程序如下:

import numpy as np
import cv2
img1=np.random.randint(0,256,size=[3,3],dtype=np.uint8)
img2=np.random.randint(0,256,size=[3,3],dtype=np.uint8)
print("img1=\n",img1)
print("img2=\n",img2)
img3=cv2.add(img1,img2)
print("cv2.add(img1,img2)=\n",img3)

运行结果:

img1=
[[244 107 79]
[ 94 49 235]
[202 254 173]]
img2=
[[196 24 189]
[ 99 231 179]
[164 51 183]]
cv2.add(img1,img2)=
[[255 131 255]
[193 255 255]
[255 255 255]]

【例 3.3】分别使用加号运算符和函数cv2.add()计算两幅灰度图像的像素值之和,观察处理结果

根据题目要求,编写程序如下:


import cv2
a=cv2.imread("C:\\Users\\Administrator\\Desktop\\opencv\\lena.bmp",0)
b=a
result1=a+b
result2=cv2.add(a,b)
cv2.imshow("original",a)
cv2.imshow("result1",result1)
cv2.imshow("result2",result2)
cv2.waitKey()
cv2.destroyAllWindows()


在本例中,首先读取了图像 lena并将其标记为变量 a:接下米,使用语句“b=a”将图lena 复制到变量b内:最后,分别使用“+”和函数 cv2.add(a,b) 计算a和b 之和

运行程序,

左图是原始图像 lena
中间的图是使用加号运算符将图像 lema 自身相加的结果
右图是使用函数 cv2.add(a,b)将图像 lena 自身相加的结果


1561560858(1).png

使用加号运算符计算图像像素值的和时,将和大于 255 的值进行了取模处理,取模后大于 255 的这部分值变得更小了,导致本来应该更亮的像素点变得更暗了,相加所得的图像看起来并不自然。

使用函数 cv2.add(a,b) 计算图像像素值的和时,将和大于 255 的值处理为饱和值 255.图像像素值相加后让图像的像素值增大了,图像整体变亮。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,884评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,212评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,351评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,412评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,438评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,127评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,714评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,636评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,173评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,264评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,402评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,073评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,763评论 3 332
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,253评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,382评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,749评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,403评论 2 358