图像属性操作

  数字图像处理本质是对多维矩阵的操作。按照处理对象不同,可分为黑白图像处理,灰度图像处理,彩色图像处理。按照处理方法分为空间域处理和频域处理。按照策略分为全局处理和局部处理。

#一般步骤
 输入图像       多维数组    数组运算     图像格式
>图像数字化   ->图像表示 -> 图像处理 ->  图像存储

基本属性操作

亮度操作

对比度操作

颜色通道操作

基本属性操作

亮度操作

  亮度也称灰度·,是颜色明暗变化的范围,常用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()

原图:

图像属性操作_第1张图片

改变对比度后:

图像属性操作_第2张图片

 整体变暗。

颜色通道操作

  数字图像本质是一个多维矩阵,彩色图像是一个三位矩阵,灰度和黑白图像由二维矩阵表示。彩色图像一般分为红,绿,蓝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()

原图:

图像属性操作_第3张图片

取出颜色通道后的图像:

图像属性操作_第4张图片

   我们现在拥有三个颜色通道,尝试互换三个颜色通道:

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()

颜色通道互换后:

图像属性操作_第5张图片

你可能感兴趣的:(图像处理,图像处理,计算机视觉)