繁体   English   中英

对比度增强如何线性地拉伸图像的灰度级?

[英]contrast enhancement how linearly stretch the grey levels of an image?

img值的屏幕截图 2 [这是原始的] 3 [这是预期的输出] 这是我得到的输出我试图在python中将灰度级别从0-100拉伸到50-200 ,但是输出图像是不正确的。 我画了代表两个范围之间线性关系的直线,在第8行中,我使用此方程式获得输出。 我的代码有什么问题?

这是我的第一个问题,非常抱歉。

def Contrast_enhancement(img):
    newimg = img
    height = img.shape[0]
    width = img.shape[1]
    for i in range(height):
       for j in range(width):
           if(img[i][j] * 255 >= 0 and img[i][j] * 255 <= 100):
               newimg[i][j] = (((3/2) * (img[i][j] * 255)) + 50)/255
    return newimg
import numpy as np
import copy
def Contrast_enhancement(img):
    newimg = np.array(copy.deepcopy(img)) #this makes a real copy of img, if you dont, any change to img will change newimg too
    temp_img=np.array(copy.deepcopy(img))*3/2+50/255
    newimg = np.where(newimg<=100,temp_img,newimg)
    return newimg

或更短:

import numpy as np
import copy
def Contrast_enhancement(img):
    newimg = np.array(copy.deepcopy(img)) #this makes a real copy of img, if you dont, any change to img will change newimg too

    newimg = np.where(newimg<=100,newimg*3/2+50/255,newimg)
    return newimg

复制部分应该可以解决您的问题,而numpy部分只是为了加快处理速度。 如果newimg <= 100,则Np.where返回temp_img,否则返回newimg。

您的问题有两个答案:

  • 严格来说是一种技术(@DonQuiKong试图回答的一种),它指的是如何简单或正确地进行拉伸。
  • 另一个是隐式的,试图回答您图像拉伸的实际问题。

我在这里关注第二种情况。 从您提供的图像样本来看,您没有采取正确的方法。 让我们考虑一下您提供的样本确实具有所有0-100之间的强度值(从我个人电脑中的屏幕捕获来看,它们没有,但是屏幕取决于一定程度)。 您的方法似乎正确,应该可以解决一些小错误。

1)例如,一个小错误是:

newimg = img

不按照您的想法去做。 它确实创建了原始变量的别名。 采用:

newimg = img.copy()

代替。

2)如果出现具有不同边界的图像,则您的代码已损坏。 由于某种原因,它将忽略某些像素,我猜这不是您想要的。

3)在这种情况下,可以使用以下方法将所需的拉伸应用于整个图像:

newimg -= np.min(newimg)
newimg /= np.max(newimg)

只是将您的强度拉伸到0-255边界。

4)从样本图像来看,您还需要进行更彻底的拉伸(这会牺牲一些图像信息以增加图像对比度)。 可以使用下限值代替上述值:

    newimg -= np.min(newimg)
    newimg /= (np.max(newimg) * 0.5)

这样可以有效地“燃烧”一些像素,但在您的情况下,结果看起来更接近您想要的像素。 除此之外,您还可以将旧强度的非线性映射(例如对数映射)应用于新强度,并且不会得到任何“灼伤”像素。

值为0.5的样本:
在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM