上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
3.1.1 加号运算符
使用加号运算符“+”对图像a(像素值为a)和图像b(像素值为b)进行求和运算时,遵循以下规则:
式中,mod()是取模运算,“mod(a+b,256)”表示计算“(a+b)的和除以256取余数”。
根据上述规则,两个像素值进行加法运算时:
● 如果两个图像对应像素值的和小于或等于255,则直接相加得到运算结果。例如,像素值28和像素值36相加,得到计算结果64。
● 如果两个图像对应像素值的和大于255,则将运算结果对256取模。例如255+58=313,大于255,则计算(255+58)%256=57,得到计算结果57。式中,%表示取余运算。
当然,上述公式也可以简化为(a+b)=mod(a+b,256),在运算时无论相加的和是否大于255,都对数值256取模。
【例3.1】使用随机数数组模拟灰度图像,观察使用“+”对像素值求和的结果。
分析:数据类型np.uint8所表示的数据范围是[0,255]。通过将数组的数值类型定义为dtype=np.uint8,可以保证数组值的范围在[0,255]之间。
根据题目要求及分析,编写程序如下:
运行程序,得到如下计算结果:
从上述程序可以看到,当使用“+”计算两个256级灰度图像内像素值的和时,运算结果会对256取模。
需要注意,本例题中的加法要进行取模,这是由数组的类型dtype=np.uint8所规定的。np.uint8的数值范围是[0,255]。