赞
踩
数字图像处理本质是对多维矩阵的操作。按照处理对象不同,可分为黑白图像处理,灰度图像处理,彩色图像处理。按照处理方法分为空间域处理和频域处理。按照策略分为全局处理和局部处理。
- #一般步骤
- 输入图像 多维数组 数组运算 图像格式
- >图像数字化 ->图像表示 -> 图像处理 -> 图像存储
亮度也称灰度·,是颜色明暗变化的范围,常用0%-100%表示。一般数字图像像素亮度位0-255,可以通过对像素构成的矩阵灰度值进行操作,达到调整调整图像亮度的目的。
对比度指图像亮暗落差值(图像最大灰度值和最小灰度值之间的差值)。设原像素灰度位f(i,j)
转化后像素灰度位g(i,j),常用线性变化:g(i,j)=a*f(i,j)+b,系数a影响图像对比度,系数b影响图像亮度。
a=1原图
a>1对比度增强,图像更清晰;
a<1对比度减弱,图像变暗
b影响图像亮度,随着增加b(b>0)或减小b,图像整体灰度值上移或下移,不会改变图像对比度。
- from skimage import io
- from matplotlib import pyplot as plt
- import numpy as np # 导入所需类包
-
-
- # 改变对比度函数
- def change_ratio(im, a):
- im_change = np.zeros(shape=im.shape, dtype='uint8')
- for i in range(im.shape[0]):
- for j in range(im.shape[1]):
- for k in range(im.shape[2]):
- if im[i, j, k] * a > 255:
- im_change[i, j, k] = 255;
- elif im[i, j, k] * a < 0:
- im_change[i, j, k] = 0;
- else:
- im_change[i, j, k] = im[i, j, k] * a
- return im_change
-
-
- im = io.imread("Jo.jpg")
- plt.imshow(im)
- plt.show()
- im_change = change_ratio(im, 0.68)
- plt.imshow(im_change)
- plt.show()
原图:
改变对比度后:
整体变暗。
数字图像本质是一个多维矩阵,彩色图像是一个三位矩阵,灰度和黑白图像由二维矩阵表示。彩色图像一般分为红,绿,蓝3个颜色通道,每个颜色通道对应一个完整的二维矩阵。可以对这三个二维矩阵操作,达到操作图像通道的目的。
对图像三个颜色通道进行分离:
- from skimage import io
- from matplotlib import pyplot as plt
-
- # 导入所需类包
-
-
- img = io.imread("Jo.jpg")
- # 分别取出红,绿,蓝三个颜色通道
- img_r = img[:, :, 0]
- img_g = img[:, :, 1]
- img_b = img[:, :, 2]
- plt.imshow(img)
- plt.show()
- # 分别展示三个通道
- plt.subplot(2, 2, 1)
- io.imshow(img_r)
- plt.subplot(2, 2, 2)
- io.imshow(img_g)
- plt.subplot(2, 2, 3)
- io.imshow(img_b)
-
- plt.show()
原图:
取出颜色通道后的图像:
我们现在拥有三个颜色通道,尝试互换三个颜色通道:
- from skimage import io
- from matplotlib import pyplot as plt
-
- # 导入所需类包
-
-
- img = io.imread("Jo.jpg")
- # 分别取出红,绿,蓝三个颜色通道
- img_r = img[:, :, 0]
- img_g = img[:, :, 1]
- img_b = img[:, :, 2]
- #红色蓝色互换
- tmp=img_r
- img_r=img_b
- img_b=tmp
- #互换后通道颜色赋值给图像
- img[:,:,0]=img_r
- img[:,:,2]=img_b
- #显示图像
- plt.imshow(img)
- plt.show()
颜色通道互换后:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。