空域滤波学习

空域计算——2-D卷积(滤波)
直接2-D卷积方法:

  1. 图像矩阵与卷积核
  2. 乘积运算:对于图像的每一像素点,计算它的领域像素和卷积核的对应元素的乘积
  3. 加法运算:将每项乘积相加,作为该像素位置的值。

空域滤波器

平滑(低通)锐化(高通)
它能减弱或消除图像中的高频分量(如噪声),但图像边缘和图像轮廓变得模糊它能减弱或消除图像中的低频分量,使图像的边缘、轮廓线以及图像的细节变得清晰

高斯滤波
采用高斯模板的空间卷积
在这里插入图片描述
掩膜
ROI(region of interest)感兴趣区域

import cv2
import numpy as npdef roi_mask(img,vertices):mask = np.zeros_like(img)if len(img.shape) > 2:channel_count = img.shape[2]mask_color = (255,)*channel_countelse:mask_color = 256cv2.fillPoly(mask,verticles,mask_color)masked_img = cv2.bitwise_and(img,mask)return masked_imgdef showing(name,img):cv2.imshow(name,img)cv2.waitKey(0)cv2.destroyAllWindows()img = cv2.imread('image\lane.jpg')
# 灰度图像 img = cv2.cvtColor(img,cv2.COLOR_BGR2_GRAY)> 这里是引用h = image.shape[0]
w = image.shape[1]roi_vtx = np.array([[(0,h),(260,325),(520,325),(w,h)]])
img_mask = roi_mask(img,roi_vtx)
showing('orgimg',img)
showing('newimg',img_mask)

空域滤波

import cv2
import matplotlib.pyplot as plt
import numpy as np
import mathdef myfilter(img,kernel):h = img.shape[0]w = img.shape[1]img1 = np.zeros((h,w),np.int8)for i in range(1,h-1):for j in range(1,w-1):sum = 0for k in range(-1,2):for l in range(-1,2):sum += img[i+k,j+l]*kernel[k+1,l+1]img[i,j] = sumreturn img1img = np.array([[1,0,0,0,0,1],[0,1,0,0,1,0],[0,0,1,1,0,0],[1,0,0,0,1,0],[0,1,0,0,1,0],[0,0,1,0,1,0]])
kernel = np.array([[1,-1, -1],[-1,1, -1],[-1,-1, 1]])
filtered_img = myfilter(img,kernel)
print(filtered_img)

图像空域滤波

import cv2
import matplotlib.pyplot as plt
import numpy as np
import mathdef myfilter(img,kernel):h = img.shape[0]w = img.shape[1]img1 = np.zeros((h,w),np.uint8)for i in range(1,h-1):for j in range(1,w-1):sum = 0for k in range(-1,2):for l in range(-1,2):sum += img[i+k][j+l]*kernel[i+1][j+1]img1[i][j] = sumreturn img1def show(img):cv2.imshow('img',img)cv2.waitKey(0)cv2.destroyAllWindows()

高斯函数中
sigma越小,图像越尖锐
sigma越大,图像越平缓


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部