如何使用python更改图像中的强度阈值

时间:2017-11-21 16:55:32

标签: python image-processing

我想从显微镜图像中去除背景噪音。我尝试了不同的方法(组均衡和形态转换方法),但我得出结论,最好的方法是去除低强度像素。 我可以用photoshop做到这一点: enter image description here 如您所见,图A是原始的。我已经包含了直方图,如下图所示。在B中应用变换,我得到所需的最终图像,其中背景被移除。请参阅我在B的底部插入中应用的转换。

我开始处理python代码:

import cv2
import numpy as np
import matplotlib.pyplot as plt


img = cv2.imread('lamelipodia/Lam1.jpg', 1)



#get green channel to gray
img_g = img[:,:,1]

#get histogram
plt.hist(img_g.flatten(), 100, [0,100], color = 'g')

cv2.imshow('b/w',img_g)
#cv2.imwrite('bw.jpg',img_g)
plt.show()
cv2.waitKey(0)
cv2.destroyAllWindows()

我将数字转换为黑白 enter image description here

得到直方图: enter image description here 这与photoshop中的相似。 我一直在浏览谷歌和SO,但虽然我发现了类似的问题,但我找不到如何修改直方图。

如何使用python(numpy或openCV)应用这种转换?或者,如果您认为此前已得到回复,请告知我们。我道歉,但我一直在寻找这个。

1 个答案:

答案 0 :(得分:1)

关注Piglet链接: docs.opencv.org/3.3.1/d7/d4d/tutorial_py_thresholding.html,目标所需的功能是:

TaggedType 'Nothing  = ()

这不容易阅读。 我们必须理解为: 如果image_g中的任何像素小于150,则将其设为零,保持其余值与原来的值相同。 如果我们将其应用于图像,我们得到: enter image description here

关于如何阅读该功能的技巧是增加的风格。例如,cv2.THRESH_BINARY使其读取为: 如果image_g中的任何像素小于150,则将其设为ZERO(黑色),其余为255(白色)