当前位置:网站首页>One hundred questions of image processing (11-20)
One hundred questions of image processing (11-20)
2022-07-06 16:42:00 【Dog egg L】
Question 11 : Mean filter
Use 3*3 Let's use the average filter of !
The output of the smooth linear spatial filter is a simple average of the pixels contained in the neighborhood of the filter template , Mean filter . The mean filter is also a low-pass filter , Mean filter is easy to understand , That is, assign the average value in the neighborhood to the central element .
Mean filter is used to reduce noise , The main application of mean filter is to remove irrelevant details in the image , Uncorrelation refers to the small pixel area compared with the filter template . Blur the picture to get a rough description of the object of interest , So the grayscale of those smaller objects will be mixed with the background , Larger objects become like spots and are easy to detect . The size of the template is determined by the size of the objects that will blend into the background .
import cv2
import numpy as np
# mean filter
def mean_filter(img, K_size=3):
H, W, C = img.shape
# zero padding
pad = K_size // 2
out = np.zeros((H + pad * 2, W + pad * 2, C), dtype=np.float)
out[pad: pad + H, pad: pad + W] = img.copy().astype(np.float)
tmp = out.copy()
# filtering
for y in range(H):
for x in range(W):
for c in range(C):
out[pad + y, pad + x, c] = np.mean(tmp[y: y + K_size, x: x + K_size, c])
out = out[pad: pad + H, pad: pad + W].astype(np.uint8)
return out
# Read image
img = cv2.imread("jiaoyan.jpg")
# Mean Filter
out = mean_filter(img, K_size=3)
# Save result
cv2.imwrite("out.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()
Original image
After processing the image
Question 12 :Motion Filter
Motion Filter Take the average value of pixels in the diagonal direction , Define as follows :
import cv2
import numpy as np
# motion filter
def motion_filter(img, K_size=3):
H, W, C = img.shape
# Kernel
K = np.diag( [1] * K_size ).astype(np.float)
K /= K_size
# zero padding
pad = K_size // 2
out = np.zeros((H + pad * 2, W + pad * 2, C), dtype=np.float)
out[pad: pad + H, pad: pad + W] = img.copy().astype(np.float)
tmp = out.copy()
# filtering
for y in range(H):
for x in range(W):
for c in range(C):
out[pad + y, pad + x, c] = np.sum(K * tmp[y: y + K_size, x: x + K_size, c])
out = out[pad: pad + H, pad: pad + W].astype(np.uint8)
return out
# Read image
img = cv2.imread("jiaoyan.jpg")
# motion filtering
out = motion_filter(img, K_size=3)
# Save result
cv2.imwrite("out.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()
边栏推荐
- Installation and use of VMware Tools and open VM tools: solve the problems of incomplete screen and unable to transfer files of virtual machines
- Bisphenol based CE Resin Industry Research Report - market status analysis and development prospect forecast
- Solve the problem of intel12 generation core CPU [small core full, large core onlookers] (win11)
- Market trend report, technological innovation and market forecast of desktop electric tools in China
- 875. Leetcode, a banana lover
- Raspberry pie 4B installation opencv3.4.0
- Market trend report, technological innovation and market forecast of China's double sided flexible printed circuit board (FPC)
- Summary of game theory
- SQL快速入门
- 简单尝试DeepFaceLab(DeepFake)的新AMP模型
猜你喜欢
Summary of game theory
Chapter 5 yarn resource scheduler
Solve the problem of intel12 generation core CPU [small core full, large core onlookers] (win11)
Chapter 6 rebalance details
解决Intel12代酷睿CPU【小核载满,大核围观】的问题(WIN11)
QT style settings of qcobobox controls (rounded corners, drop-down boxes, up expansion, editable, internal layout, etc.)
QT implementation fillet window
The concept of spark independent cluster worker and executor
ffmpeg命令行使用
Codeforces round 797 (Div. 3) no f
随机推荐
Spark的RDD(弹性分布式数据集)返回大结果集
图像处理一百题(1-10)
MP4格式详解
Chapter 6 datanode
Anaconda下安装Jupyter notebook
Codeforces Round #797 (Div. 3)无F
Remove the border when input is focused
Chapter 7__ consumer_ offsets topic
Market trend report, technical innovation and market forecast of tabletop dishwashers in China
Tree of life (tree DP)
图像处理一百题(11-20)
AcWing——第55场周赛
(POJ - 1458) common subsequence (longest common subsequence)
useEffect,函數組件掛載和卸載時觸發
Submit several problem records of spark application (sparklauncher with cluster deploy mode)
软通乐学-js求字符串中字符串当中那个字符出现的次数多 -冯浩的博客
原生js实现全选和反选的功能 --冯浩的博客
Chapter 5 namenode and secondarynamenode
QT realizes window topping, topping state switching, and multi window topping priority relationship
QT implementation fillet window