文章目录
一、前言二、统计直方图获取ROI三、提取ROI的阴影图片
一、前言
去除历史扫描文件图片中的折痕,主要为技术探讨。 参考文献:http://www.doc88.com/p-0886436885083.html 主要使用:二值化与骨架提取
文章基于路径搜索折痕检测方法的系统框图如下:
首先,包含折痕的感兴 趣区域可以根据亮度值的分布提取出来。基于凸包络的算法用于提取出感兴趣区 域的阴影图像。利用折痕两侧的亮度不同对阴影图像进行滤波得到折痕位置图。 对滤波后的图像进行二值化。保留最大连通域。之后运用形态学膨胀和骨骼细化操作产生路径搜索图。最后运用迪杰斯特拉算法进行路径搜索的到折痕的准确位置。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20200806194030263.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dzcF8xMTM4ODg2MTE0,size_16,color_FFFFFF,t_70)
二、统计直方图获取ROI
import cv2
import numpy as np
import matplotlib.pyplot as plt
def calcAndDrawHist(image):
return cv2.calcHist([image], [0], None, [256], [0.0,255.0])
def show_hist(original_img):
b, g, r = cv2.split(original_img)
histImgB = calcAndDrawHist(b)
histImgG = calcAndDrawHist(g)
histImgR = calcAndDrawHist(r)
plt.plot(histImgB,'b')
plt.plot(histImgG,'g')
plt.plot(histImgR,'r')
plt.show()
def count_colors(original_img): # 测试用
height,width = original_img.shape[:2]
b, g, r = cv2.split(original_img)
b_color = np.multiply(b,65025)
g_color = np.multiply(g,250)
colors = b_color + g_color + r
num_color = colors.reshape(1,-1)[0]
len_color = int(len(num_color)*(1-0.05))
print("[num_color]",len(num_color))
print("[len_color]",len_color)
histImg = np.bincount(num_color)
New_Img = np.zeros((height,width),dtype=np.uint8)
for y in range(height):
for x in range(width):
if 55955 |