簡體   English   中英

如何從圖像中去除飽和像素?

[英]How do I remove saturated pixels from an image?

我的代碼目標是打印一個圖像,其中我已經刪除了所有飽和像素(發出最大值的像素)。 這是因為我正在分析來自星星的 .fit 圖像的數據。

我得到的指令是:“你需要做的是從數據中找出二維數組中的最大像素值。然后編寫代碼來刪除這些值,同時仍然保留圖像。基本上,我想要的是看到的是一顆中間有一個洞的星星,你已經去除了飽和像素。”

我已成功找到最大像素值 (65535),現在我需要打印沒有具有該特定值的像素的圖像。

到目前為止,這是我的代碼,但現在我不知道如何從我的圖像中刪除像素。

import numpy as np
from astropy.io import fits
import matplotlib.pyplot as plt

fits_image_filename = "Acturus_V_2s.fit"
hdul = fits.open(fits_image_filename)

data = hdul[0].data

datacut = data[610:710,755:855]
plt.imshow(datacut, origin="lower")

MaxPixelValue = np.amax(datacut)
print(MaxPixelValue) 

這給出了輸出:65535 和我的圖像

我應該如何刪除這些像素?

正如評論指出的那樣,通常不可能從圖像中“刪除”像素。 但是有幾種方法可以處理圖像中的某些像素,同時不處理其他像素。 一般來說,要做到這一點,您最終將創建一個布爾掩碼——一個與您的圖像具有相同形狀但包含TrueFalse值的數組。

mask = datacut >= MaxPixelValue

現在, mask數組在原始圖像飽和的任何地方都包含True ,而在其他任何地方都包含False

您可能希望將圖像中的飽和像素設置為某種指示性顏色(例如白色或黑色):

datacut[mask] = 0

或者您可以創建一個 numpy maskedarray ,它是原始圖像和掩碼的一種組合:

masked_image = np.ma.masked_array(datacut, mask)

numpy 文檔簡要描述了如何使用掩碼數組。 https://numpy.org/doc/stable/reference/maskedarray.generic.html

我還從天體物理學社區找到了一些可能有用的文檔,因為您也在使用fitsastropy https://prancer.physics.louisville.edu/astrowiki/index.php/Image_processing_with_Python_and_SciPy#Masked_Image_Operations

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM