gpt4 book ai didi

python-3.x - 在不使用内置函数的情况下使用 python 和 opencv 进行直方图均衡

转载 作者:太空宇宙 更新时间:2023-11-03 23:10:50 25 4
gpt4 key购买 nike

我用过公式:((L-1)/MN)ni 在哪里L为灰度总数,MN为图像大小,ni为累积频率

但我总是得到全黑图像。我也尝试过其他图像。

import numpy as np
import cv2

path="C:/Users/Arun Nambiar/Downloads/fingerprint256by256 (1).pgm"
img=cv2.imread(path,0)

#To display image before equalization
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()


a=np.zeros((256,),dtype=np.float16)
b=np.zeros((256,),dtype=np.float16)
height,width=img.shape

#finding histogram
for i in range(width):
for j in range(height):
g=img[j,i]
a[g]=a[g]+1
print(a)


#performing histogram equalization

tmp=255/(height*width)

a[0]=tmp*a[0]
b[0]=round(a[0])

for g in range(1,width):
a[g]=(a[g]*tmp)+(a[g-1]*tmp)
b[g]=round(a[g])



print(b)


b=b.astype(np.uint8)
print(b)
for i in range(width):
for j in range(height):
g=img[j,i]
img[j,i]=b[g]

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

我附上图片 this is image i have used

最佳答案

均衡步骤的实现有些不正确。概率分布函数 (PDF) 的计算应取决于 bin 的数量而不是图像宽度(尽管在这种特定情况下它们是相等的)。请参阅以下代码以及均衡步骤的更正实现。

import numpy as np
import cv2

path = "fingerprint256by256.pgm"
img = cv2.imread(path,0)

#To display image before equalization
cv2.imshow('image',img)
cv2.waitKey(0)


a = np.zeros((256,),dtype=np.float16)
b = np.zeros((256,),dtype=np.float16)

height,width=img.shape

#finding histogram
for i in range(width):
for j in range(height):
g = img[j,i]
a[g] = a[g]+1

print(a)


#performing histogram equalization
tmp = 1.0/(height*width)
b = np.zeros((256,),dtype=np.float16)

for i in range(256):
for j in range(i+1):
b[i] += a[j] * tmp;
b[i] = round(b[i] * 255);

# b now contains the equalized histogram
b=b.astype(np.uint8)

print(b)

#Re-map values from equalized histogram into the image
for i in range(width):
for j in range(height):
g = img[j,i]
img[j,i]= b[g]

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

在 Ubuntu 14.04 上使用 Python 3.4 和 OpenCV 3.4 进行了测试和验证。

关于python-3.x - 在不使用内置函数的情况下使用 python 和 opencv 进行直方图均衡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50578876/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com