数字图像系统

    在光照的情况下,通过成像系统将大自然中的物体拍摄出来,成像系统手机自带有,这里面我们关心的是分辨率,成像系统显示的点数越多,阵列越大,越能真实的反映出当时物体的形象颜色。

图形与图像的区别:存储格式不一样,图形是由指令来构成的,命令在计算机里是语句,记录的是坐标,颜色。图像没有命令,是一个大数据,里面是像素值,直观,信息量大

图像的表示由颜色值这样一个矩阵表示,而颜色值对应于颜色表里面的索引值。点的处理有领域法,平域法,空域法。

复原,增强,分割

1 图像的文件格式。

   (1)黑白图像:0 1

   (2)索引图像:有索引表,索引表矩阵,数据内容不一样,造成有灰度图像(RGB三个分量值相等,索引号等于颜色的灰度值),伪彩色图像(分度值不相等,只能表示256中的一色),真彩色数据区是三个矩阵。

  有调色板了,意味着我们要用我们带的调色板去显示这张图。有颜色表,八位,调到计算机内存,创建调色板,把调色板放到设备环境里面。没有,真彩色,直接用RGB显示图像。

   位图文件来说:最常用的几种格式。BMP位图可以直接进行绘画操作,GIF(Graphics Interchange format图像转换格式,用来传输,在文件里面进行插入,容量小,颜色数有限)位图,TIFF(Tag image file format标签图像文件格式)位图,JPEG(Join photographics experts group联合图像专家组)位图

BMP文件:BITmapfileheader(位图文件头结构),bitmapinfoheader(位图信息头结构),位图颜色表rgbquad,位图像素数据

2 图像滤波与增强:

图像滤波:让信号波一部分可以通过,一部分不通过,根据图像的高低频,设置高通和低通滤波器,高通滤波器可以检测变化尖锐的地方,低通滤波器可以让图像变得平滑,消除噪声,高通可以用于边缘检测,低通可以用于图像的平滑去燥

线性滤波:方框滤波,均值滤波,高斯滤波

非线性滤波:中值滤波,双边滤波

领域算子:利用周边的信息进行计算,

线性滤波:输入像素的加权和,类似于卷积

2.1 方框滤波:boxFilter

使他更模糊K=A\begin{bmatrix} 1& 1 & 1\\ 1& 1& 1\\ 1& 1& 1 \end{bmatrix} A=\left\{\begin{matrix} 1/(w+d),normalize=true\\ 1,normalize=false \end{matrix}\right.

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread("2.jpg")
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.subplot(131),plt.imshow(img),plt.title('original')
plt.xticks([]), plt.yticks([])
arry=np.array(img).tolist()
r=cv2.boxFilter(img,-1,(3,3),normalize=1)
d=cv2.boxFilter(img,-1,(3,3),normalize=0)
plt.subplot(132),plt.imshow(r),plt.title('equa')
plt.xticks([]),plt.yticks([])
plt.subplot(133),plt.imshow(d),plt.title('equa')
plt.xticks([]),plt.yticks([])
plt.show()

2.2 均值滤波:blur()

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread("2.jpg")
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.subplot(121),plt.imshow(img),plt.title('original')
plt.xticks([]), plt.yticks([])
# 彩色图像均衡化,需要分解通道 对每一个通道均衡化
(b, g, r) = cv2.split(img)
bH = cv2.equalizeHist(b)
gH = cv2.equalizeHist(g)
rH = cv2.equalizeHist(r)
# 合并每一个通道
result = cv2.merge((bH, gH, rH))

plt.subplot(122),plt.imshow(result),plt.title('equa')
plt.xticks([]),plt.yticks([])
plt.show()

2.3 高斯滤波()

能有效的消除高斯噪声,保留更多的图像细节

import cv2
import numpy as np
from matplotlib import pyplot as plt

img=cv2.imread('2.jpg')
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
blur=cv2.GaussianBlur(img,(7,7),7)
plt.subplot(121),plt.imshow(img),plt.title('original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(img),plt.title('blurres')
plt.xticks([]),plt.yticks([])
plt.show()

2.4 非线性中值滤波

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt
img = cv.imread('3.jpg')
median = cv.medianBlur(img,7)


plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(median),plt.title('median')
plt.xticks([]), plt.yticks([])
plt.show()

2.5 非线性双边滤波

import cv2
from matplotlib import pyplot as plt
img = cv2.imread('bilateral.jpg')
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
blur = cv2.bilateralFilter(img,-1,15,10)
plt.subplot(121),plt.imshow(img),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(blur),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()

2.6 数据增强

直方图均衡化:将分布不均匀的图片变成分布均匀的方法.

import cv2

from matplotlib import pyplot as plt
img = cv2.imread("./image/dark1.jpg")
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
# 彩色图像均衡化,需要分解通道 对每一个通道均衡化
(b, g, r) = cv2.split(img)
bH = cv2.equalizeHist(b)
gH = cv2.equalizeHist(g)
rH = cv2.equalizeHist(r)
# 合并每一个通道
result = cv2.merge((bH, gH, rH))
plt.subplot(121),plt.imshow(img),plt.title('original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(result),plt.title('blurres')
plt.xticks([]),plt.yticks([])
plt.show()

Gamma变换:是对图像灰度值进行的非线性操作,使输出图像灰度值与输入图像灰度值呈指数的关系,目的就是用来图像增强 ,提升暗部细节,通过非线性变换,让图像从曝光强度的线性响应变得更加 接近人眼感受的响应

import cv2
import numpy as np
from matplotlib import pyplot as plt
img=cv2.imread('2.jpg')
img=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
def adjust_gamma(image, gamma=1.0):
    invGamma = 1.0/gamma
    table = []
    for i in range(256):
        table.append(((i / 255.0) ** invGamma) * 255)
    table = np.array(table).astype("uint8")
    print(table)
    return cv2.LUT(image, table)

img_gamma = adjust_gamma(img, 0.8)
#print(img_gamma)
plt.subplot(121),plt.imshow(img),plt.title('original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(img_gamma),plt.title('blurres')
plt.xticks([]),plt.yticks([])
plt.show()

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值