检测对比图像的纹理背景 [英] Detect textured background for contrasted images

查看:0
本文介绍了检测对比图像的纹理背景的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两种类型的图像,它们都进行了对比。

类型1:(白色干净背景)

类型2:(背景中有一些灰色纹理)

我可以应用高斯模糊和阈值来处理类型2的图像,以将其调整为与类型1类似的白色背景,如下所示:

type2_img = cv2.imread(type2.png)
# convert to grayscale
gray = cv2.cvtColor(type2_img , cv2.COLOR_BGR2GRAY)
# threshold the image using Otsu's thresholding
thresh = cv2.threshold(gray.copy(), 0, 255, cv2.THRESH_OTSU)[1]
# convert back to RGB
type2_img = cv2.cvtColor(thresh,cv2.COLOR_GRAY2RGB)

并且,我可以得到以下结果

但是,我不希望对类型1图像应用相同的方法,因为它已经满足条件。

那么,OpenCV中有没有什么图像处理方法可以区分类型2和类型1?

推荐答案

您提供的type 1图像是灰度图像,不是完全黑白图像。然而,最后一个阈值输出图像是黑白的。

根据您的问题,我的理解是这两者都应归类为type 1type 2图像示例应归类为类型2。

如果类型1始终是黑白的,您可以计算图像中0和1的数量,并检查它们的总和是否等于图像的总像素数。

此处的一个选项是在不修改图像的情况下对两种类型的图像进行分类,即使用图像直方图中黑白像素的百分比。

代码

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

#img_path = r'hist_imgs/1.png'
#img_path = r'hist_imgs/2.png'
img_path = r'hist_imgs/3.png'

img = cv2.imread(img_path, cv2.IMREAD_GRAYSCALE)
cv2.imshow('Image', img)

img_pixel_count = img.shape[0] * img.shape[1]
print(img.shape)
print(img_pixel_count)

h = np.array(exposure.histogram(img, nbins=256))

bw_count = h[0][0] + h[0][255]
other_count = img_pixel_count - bw_count

print('BW PIXEL COUNT: ',  bw_count)
print('OTHER PIXEL COUNT: ',  other_count)

bw_percentage = (bw_count * 100.0) / img_pixel_count
other_percentage = (other_count * 100.0) / img_pixel_count

print('BW PIXEL PERCENTAGE: ',  bw_percentage)
print('OTHER PIXEL PERCENTAGE: ',  other_percentage)

differentiate_threshold = 3.0
if other_percentage > differentiate_threshold:
    print('TYPE 2: GRAYSCALE')
else:
    print('TYPE 1: BLACK AND WHITE')

plt.hist(img.ravel(), 256, [0, 256])
plt.title('Histogram')
plt.show()

输入图像

图片1:

图2:

图3:

代码输出

图片1:

(154, 74)
11396
BW PIXEL COUNT:  11079
OTHER PIXEL COUNT:  317
BW PIXEL PERCENTAGE:  97.21832221832221
OTHER PIXEL PERCENTAGE:  2.781677781677782
TYPE 1: BLACK AND WHITE

图2:

(38, 79)
3002
BW PIXEL COUNT:  1543
OTHER PIXEL COUNT:  1459
BW PIXEL PERCENTAGE:  51.39906728847435
OTHER PIXEL PERCENTAGE:  48.60093271152565
TYPE 2: GRAYSCALE

图3:

(38, 79)
3002
BW PIXEL COUNT:  3002
OTHER PIXEL COUNT:  0
BW PIXEL PERCENTAGE:  100.0
OTHER PIXEL PERCENTAGE:  0.0
TYPE 1: BLACK AND WHITE

这篇关于检测对比图像的纹理背景的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆