JPEG
压缩技术串讲全章知识点。人工智能是引领未来发展的战略性技术,是新一轮科技革命和产业变革的重要驱动力量,将深刻地改变人类社会生活。
促进人工智能和实体经济的深度融合,构建数据驱动、人机协同、跨界融合、共创分享的智能经济形态,更是推动质量变革、效率变革、动力变革的重要途经。
进年来,我国人工智能新技术、新产品、新业态持续涌现,与农业、制造业、服务业等行业的融合步伐明显加快,在技术创新、应用推广、产业发展等方面成效初显。
人工智能技术并不是一个新生事物,它在最近几年引起全球性关注并得到飞速发展的主要原因,在于它的三个基本要素(算法、数据、算力)的迅猛发展,其中又以数据和算力的发展尤为重要。
物联网技术的蓬勃发展使得数据累计的难度越来越低,而芯片算力的不断提升,使得过去只能通过云计算才能完成的人工智能运算,现在可以下沉到最普通的设备上完成。
物联网技术为机器带来感知能力,而人工智能则通过计算算力为机器带来了决策能力,正如感知和大脑对自然生命进化所起到的必然性作用。
https://hulin.blog.csdn.net/article/details/107570020
https://hulin.blog.csdn.net/article/details/107578369
from skimage import data, color, io
from matplotlib import pyplot as plt
import numpy as np
def corre12d(img, window):
m = window.shape[0]
n = window.shape[1]
# 边界通过0灰度值填充扩展
img_border = np.zeros((img.shape[0] + m - 1, img.shape[1] + n - 1))
img_border[(m - 1) // 2:(img.shape[0] + (m - 1) // 2), (n - 1) // 2:(img.shape[1] + (n - 1) // 2)] = img
img_result = np.zeros(img.shape)
for i in range(img_result.shape[0]):
for j in range(img_result.shape[1]):
temp = img_border[i:i + m, j:j + n]
img_result[i, j] = np.sum(np.multiply(temp, window))
return img_border, img_result
# window表示滤波模板,img表示原始矩阵
window = np.array([[1, 0, 0], [0, 0, 0], [0, 0, 2]])
img = np.array([[1, 2, 1, 0, 2, 3], [0, 1, 1, 2, 0, 1],
[3, 0, 2, 1, 2, 2], [0, 1, 1, 0, 0, 1],
[1, 1, 3, 2, 2, 0], [0, 0, 1, 0, 1, 0]])
# img_border表示边界填充后的矩阵,img_result表示空间滤波结果
img_border, img_result = corre12d(img, window)
import numpy as np
from scipy import signal
from skimage import data, io
from matplotlib import pyplot as plt
# 定义二维灰度图像的空间滤波函数
def correl2d(img, window):
"""
使用滤波器实现图像的空间相关
mode='same' 表示输出尺寸等于输入尺寸
boundary=‘fill’ 表示滤波前,用常量值填充原始图像的边缘,默认常量值为0
:param img:
:param window:
:return:
"""
s = signal.correlate2d(img, window, mode='same', boundary='fill')
return s.astype(np.uint8)
img = data.camera()
# 3*3 盒状滤波模板
window1 = np.ones((3, 3)) / (3 ** 2)
# 5*5 盒状滤波模板
window2 = np.ones((5, 5)) / (5 ** 2)
# 9*9 盒状滤波模板
window3 = np.ones((9, 9)) / (9 ** 2)
# 生成滤波结果
img1 = correl2d(img, window1)
img2 = correl2d(img, window2)
img3 = correl2d(img, window3)
plt.figure()
plt.imshow(img)
plt.figure()
plt.imshow(img1)
plt.figure()
plt.imshow(img2)
plt.figure()
plt.imshow(img3)
plt.show()
import numpy as np
from scipy import signal
from skimage import data, io
from matplotlib import pyplot as plt
import math
# 定义二维灰度图像的空间滤波函数
def correl2d(img, window):
"""
使用滤波器实现图像的空间相关
mode='same' 表示输出尺寸等于输入尺寸
boundary=‘fill’ 表示滤波前,用常量值填充原始图像的边缘,默认常量值为0
:param img:
:param window:
:return:
"""
s = signal.correlate2d(img, window, mode='same', boundary='fill')
return s.astype(np.uint8)
# 定义二维高斯函数
def gauss(i, j, sigma):
return 1 / (2 * math.pi * sigma ** 2) * math.exp(-(i ** 2 + j ** 2) / (2 * sigma ** 2))
# 定义radius*radius的高斯平滑模板
def gauss_window(radius, sigma):
window = np.zeros((radius * 2 + 1, radius * 2 + 1))
for i in range(-radius, radius + 1):
for j in range(-radius, radius + 1):
window[i + radius][j + radius] = gauss(i, j, sigma)
return window / np.sum(window)
img = data.camera()
# 3*3 高斯平滑滤波模板
window1 = gauss_window(3, 1.0)
# 5*5 高斯平滑滤波模板
window2 = gauss_window(5, 1.0)
# 9*9 高斯平滑滤波模板
window3 = gauss_window(9, 1.0)
# 生成滤波结果
img1 = correl2d(img, window1)
img2 = correl2d(img, window2)
img3 = correl2d(img, window3)
plt.figure()
plt.imshow(img, cmap='gray')
plt.figure()
plt.imshow(img1, cmap='gray')
plt.figure()
plt.imshow(img2, cmap='gray')
plt.figure()
plt.imshow(img3, cmap='gray')
plt.show()
from scipy import ndimage
from skimage import util, data
from matplotlib import pyplot as plt
img = data.astronaut()[:, :, 0]
# 对图像加入脉冲噪声
noise_img = util.random_noise(img, mode='s&p', seed=None, clip=True)
# 中值滤波
n = 3
new_img = ndimage.median_filter(noise_img, (n, n))
plt.figure()
plt.axis('off')
plt.imshow(img, cmap='gray') # 显示原始图像
plt.figure()
plt.axis('off')
plt.imshow(noise_img, cmap='gray') # 显示加噪图像
plt.figure()
plt.axis('off')
plt.imshow(new_img, cmap='gray') # 显示去噪图像
plt.show()
from scipy import ndimage
from skimage import util, data
from matplotlib import pyplot as plt
import numpy as np
img = data.astronaut()
noise_img = np.zeros(img.shape)
new_img = np.zeros(img.shape)
for i in range(3):
gray_img = img[:, :, i]
# 对图像加入脉冲噪声
noise_img[:, :, i] = util.random_noise(gray_img, mode='s&p', seed=None, clip=True)
# 中值滤波
n = 3
new_img[:, :, i] = ndimage.median_filter(noise_img[:, :, i], (n, n))
plt.figure()
plt.axis('off')
plt.imshow(img, cmap='gray') # 显示原始图像
plt.figure()
plt.axis('off')
plt.imshow(noise_img, cmap='gray') # 显示加噪图像
plt.figure()
plt.axis('off')
plt.imshow(new_img, cmap='gray') # 显示去噪图像
plt.show()
from scipy import ndimage
from skimage import util, data
from matplotlib import pyplot as plt
import numpy as np
img = data.astronaut()[:, :, 0]
# 对图像加入胡椒噪声
pepper_img = util.random_noise(img, mode='pepper', seed=None, clip=True)
# 对图像加入盐粒噪声
salt_img = util.random_noise(img, mode='salt', seed=None, clip=True)
n = 3
# 最大值滤波
max_img = ndimage.maximum_filter(pepper_img, (n, n))
# 最小值滤波
min_img = ndimage.minimum_filter(salt_img, (n, n))
plt.figure()
plt.axis('off')
plt.imshow(img, cmap='gray') # 显示原始图像
plt.figure()
plt.axis('off')
plt.imshow(pepper_img, cmap='gray') # 显示加胡椒噪声图像
plt.figure()
plt.axis('off')
plt.imshow(salt_img, cmap='gray') # 显示加盐粒噪声图像
plt.figure()
plt.axis('off')
plt.imshow(max_img, cmap='gray') # 显示最大值滤波图像
plt.figure()
plt.axis('off')
plt.imshow(min_img, cmap='gray') # 显示最小值滤波图像
plt.show()
from skimage import data, filters
from matplotlib import pyplot as plt
img = data.camera()
# 罗伯特交叉梯度算子
img_robert_pos = filters.roberts_pos_diag(img)
img_robert_neg = filters.roberts_neg_diag(img)
img_robert = filters.roberts(img)
# 显示原始图像
plt.figure()
plt.imshow(img, cmap='gray')
plt.show()
# 显示罗伯特正对角线边缘图像
plt.figure()
plt.imshow(img, cmap='gray')
plt.show()
# 显示罗伯特负对角线边缘图像
plt.figure()
plt.imshow(img, cmap='gray')
plt.show()
# 显示罗伯特梯度图像
plt.figure()
plt.imshow(img, cmap='gray')
plt.show()
from skimage import data, filters
from matplotlib import pyplot as plt
img = data.camera()
# Sobel算子
img_sobel_h = filters.sobel_h(img)
img_sobel_v = filters.sobel_v(img)
img_sobel = filters.sobel(img)
# 显示原始图像
plt.figure()
plt.imshow(img, cmap='gray')
plt.show()
# 显示水平Sobel边缘图像
plt.figure()
plt.imshow(img_sobel_h, cmap='gray')
plt.show()
# 显示竖直Sobel边缘图像
plt.figure()
plt.imshow(img_sobel_v, cmap='gray')
plt.show()
# 显示Sobel梯度图像
plt.figure()
plt.imshow(img_sobel, cmap='gray')
plt.show()
from skimage import data, filters
from matplotlib import pyplot as plt
img = data.camera()
# laplace
img_laplace = filters.laplace(img, ksize=3, mask=None)
img_enhance = img + img_laplace
# 显示原始图像
plt.figure()
plt.imshow(img, cmap='gray')
plt.show()
# 显示拉普拉斯图像
plt.figure()
plt.imshow(img_laplace, cmap='gray')
plt.show()
# 显示锐化增强图像
plt.figure()
plt.imshow(img_enhance, cmap='gray')
plt.show()
from skimage import data, filters
from matplotlib import pyplot as plt
from scipy import signal
import numpy as np
def correlate2d(img, window):
s = signal.correlate2d(img, window, mode='same', boundary='fill')
return s
img = data.camera()
# 3*3 盒状滤波模板
window = np.ones((3, 3)) / (3 ** 2)
img_blur = correlate2d(img, window)
img_edge = img - img_blur
img_enhance = img + img_edge
# 显示原始图像
plt.figure()
plt.imshow(img, cmap='gray')
plt.show()
# 显示模糊图像
plt.figure()
plt.imshow(img_blur, cmap='gray')
plt.show()
# 显示差值图像
plt.figure()
plt.imshow(img_edge, cmap='gray')
plt.show()
# 显示锐化增强图像
plt.figure()
plt.imshow(img_enhance, cmap='gray')
plt.show()
from skimage import data, filters, io
from matplotlib import pyplot as plt
import numpy as np
# 图像空间滤波函数
def correlate2d(img, window):
m = window.shape[0]
n = window.shape[1]
# 边界通过0灰度值填充扩展
img1 = np.zeros((img.shape[0] + m - 1, img.shape[1] + n - 1))
img1[(m - 1) // 2:(img.shape[0] + (m - 1) // 2), (n - 1) // 2:(img.shape[1] + (n - 1) // 2)] = img
img2 = np.zeros(img.shape)
for i in range(img2.shape[0]):
for j in range(img2.shape[1]):
temp = img1[i:i + m, j:j + n]
img2[i, j] = np.sum(np.multiply(temp, window))
return img2
img = io.imread('boneScan.jpg', as_gray=True)
# img_laplace为原始图像经过拉普拉斯变换后的结果
window = np.array([[-1, -1, -1], [-1, 8, -1], [-1, -1, -1]])
img_laplace = correlate2d(img, window)
img_laplace = 255 * (img_laplace - img_laplace.min()) / (img_laplace.max() - img_laplace.min())
# 将img与img_laplace相加得到锐化增强图像
img_laplace_enhance = img + img_laplace
# img_sobel为原始图像img经sobel处理的结果
img_sobel = filters.sobel(img)
# 使用5*5均值滤波器平滑后的Sobel图像
window_mean = np.ones((5, 5)) / (5 ** 2)
img_sobel_mean = correlate2d(img_sobel, window_mean)
# 将img_laplace_enhance 与 img_sobel_mean相乘得到锐化结果
img_mask = img_laplace_enhance * img_sobel_mean
# 将原图像img与锐化图像img_mask相加得到锐化增强图像
img_sharp_enhance = img + img_mask
# 对img_sharp_enhance进行灰度幂律变换得到最终结果
img_enhance = img_sharp_enhance ** 0.5
# 显示图像
imgList = [img, img_laplace, img_laplace_enhance, img_sobel, img_sobel_mean, img_mask, img_sharp_enhance, img_enhance]
for grayImg in imgList:
plt.figure()
plt.axis('off')
plt.imshow(grayImg, cmap='gray')
plt.show()