gpt4 book ai didi

python - 如何从 Python 中的图像中删除渐晕效果?

转载 作者:行者123 更新时间:2023-11-28 17:29:33 25 4
gpt4 key购买 nike

我是一名 2 级学生,目前正在从事以研究为主导的调查实验室。我正在研究太阳黑子,作为任务的一部分,我正在编写一个 Python 模块,该模块(除其他外)将消除渐晕对图像的影响——也就是说,由于效果,光线向照片边缘逐渐变暗的相机。我想尝试使用 Python 删除它。

到目前为止,我解决这个问题的方法是拍摄一张应该均匀的背景照片,纠正渐晕造成的效果,然后将我们真正关心的图像数组除以这个“测试”图像(请参阅代码以获取更详细的文档字符串)。但是,这不是很有效,我不确定为什么。我猜问题出在第 18 行——我只是错误地“组合”了图像数组——但我不确定如何解决这个问题。

正如您可能猜到的那样,我已经对这个问题进行了一次相当老的尝试,目前我不知道下一步该怎么做——所以任何建议、帮助、指导或提示都将不胜感激!

到目前为止,这是我的尝试:

from __future__ import division
import numpy
from PIL import Image
import matplotlib.pyplot as pyplot

IMAGE_1 = Image.open("Vignette test.jpg") #Import a grayscale test image of a uniform background.
ARRAY_1 = numpy.array(IMAGE_1) #Convert into array and slice into just 2 dimensions.
GRAYSCALE_ARRAY_1 = ARRAY_1[:,:,0]
MAX_PIXEL_1 = numpy.amax(GRAYSCALE_ARRAY_1) #Standardise grayscale array by setting max pixel value to 1.
STANDARDISED_ARRAY_1 = GRAYSCALE_ARRAY_1 / MAX_PIXEL_1

IMAGE_2 = Image.open("IMG_1982.jpg") #Import the image we wish to remove the vignette effect from.
ARRAY_2 = numpy.array(IMAGE_2) #Convert into array and slice into just 2 dimensions.
GRAYSCALE_ARRAY_2 = ARRAY_2[:,:,0]
MAX_PIXEL_2 = numpy.amax(GRAYSCALE_ARRAY_2) #Standardise grayscale array by setting max pixel value to 1.
STANDARDISED_ARRAY_2 = GRAYSCALE_ARRAY_2 / MAX_PIXEL_2

CORRECTED_ARRAY = STANDARDISED_ARRAY_2 / STANDARDISED_ARRAY_1 #Divide the two arrays to remove vignetting.
MAX_PIXEL_3 = numpy.amax(CORRECTED_ARRAY) #Standardise corrected array by setting max pixel value to 1.
STANDARDISED_ARRAY_3 = CORRECTED_ARRAY / MAX_PIXEL_3
ARRAY_3 = STANDARDISED_ARRAY_3 * MAX_PIXEL_2 #Ensure that the max pixel value does not exceed 255.
IMAGE_3 = Image.fromarray(ARRAY_3) #Convert into image

pyplot.figure(figsize=(10,12))
pyplot.subplot(211)
IMGPLOT = pyplot.imshow(IMAGE_2) #Represent orignal image graphically with colour bar
IMGPLOT.set_cmap('gray')
pyplot.colorbar()

pyplot.subplot(212)
IMGPLOT = pyplot.imshow(IMAGE_3) #Represent corrrected image graphically with colour bar
IMGPLOT.set_cmap('gray')
pyplot.colorbar()
pyplot.show()

Here's what is generated by pyplot - the original images are too large to attach. The top image is the original 'image of interest'; and the bottom one should be the 'corrected image'.

最佳答案

事实证明,“测试”图像和我们关心的图像必须具有相同的曝光时间才能使其正常工作——代码本身不一定有问题。

关于python - 如何从 Python 中的图像中删除渐晕效果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35459362/

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