بازسازی تصاویر تمیز از داده های نویز: دیدگاه استنتاج بیزی


نویسنده(های): بهوش آگون

در ابتدا منتشر شد به سمت هوش مصنوعی.

مقدمه ای بر تحلیل بیزی

در ابتدایی‌ترین شکل، استنتاج بیزی تنها تکنیکی برای خلاصه کردن استنتاج آماری است که بیان می‌کند احتمال ارائه شواهد جدید به یک فرضیه چقدر است. این روش از قضیه بیز می آید، که راهی برای محاسبه احتمال وقوع یا رخداد یک رویداد، با توجه به هرگونه دانش قبلی از شرایط (که ممکن است یک رویداد از آنجا اتفاق نیفتد) ارائه می دهد:

در اینجا یک ارائه تا حدی خشن از قضیه بیز آمده است:

کجا:
– P(A|B) به احتمال پسین اشاره دارد، یعنی احتمال فرضیه (A) داده داده شده (B).
– P(B|A) احتمال یا احتمال اینکه داده های به دست آمده در صورت صحیح بودن فرضیه چقدر است.
– P(A) احتمال قبلی یا نقطه شروع ما در رابطه با فرضیه مورد نظر قبل از استفاده از داده های نمونه است.
– P(B) احتمال داده ها یا به عنوان شواهد شناخته می شود.

استنتاج بیزی در ساده ترین روش ممکن را می توان به عنوان روشی توصیف کرد که به ما امکان می دهد با نوعی باور در مورد چیزی – قبلی – شروع کنیم و سپس آن باور را بر اساس اطلاعات جدیدی که بر حسب احتمال دریافت می شود اصلاح کنیم. بنابراین روش بیزی به ویژه برای عدم قطعیت و داده های ناقص، مانند بازسازی سیگنال از نویز، مناسب است.

این نام از یک ریاضیدان قرن هجدهم به نام توماس بیز گرفته شده است.

چالش: داده های پر سر و صدا در بازسازی تصویر

نویز در تصاویر یک مشکل رایج در زمینه های مختلف است:
برخی از تصاویر به دلیل:

– تصویربرداری پزشکی: برخی از سی‌تی‌اسکن‌ها، ام‌آر‌آی‌ها یا اشعه ایکس با آثار باستانی ایجاد شده توسط حرکت بیماران در طول زمان اسکن، محدودیت وضوح سخت‌افزار، یا به سادگی وضوح پایینی دارند، تحریف می‌شوند.

– تصاویر ماهواره ای: در یک نقطه، تصاویر گرفته شده توسط ماهواره ها به دلیل شرایط جوی، محدودیت حسگر یا تاری حرکت تحریف شده اند، بنابراین تصاویر ماهواره ای برای نظارت بر محیط زیست یا اهداف ناوبری مفید نیستند.

– نجوم: گاهی اوقات، واضح ترین نماها از اجرام آسمانی به دلیل نویز ناشی از خود تلسکوپ و تداخل جو زمین تحریف می شود.

بازسازی یک تصویر تمیز و اصلی با استفاده از داده های نویز کار نسبتاً دشواری است. فیلتر کانولوشنال که مستقیماً روی داده های پر سر و صدا اعمال می شود، معمولاً نویز را حذف می کند، اما منجر به از دست دادن جزئیات مهم یا معرفی مصنوعات مختلف می شود.

رویکرد بیز به بازسازی تصویر

اینجاست که استنتاج بیزی به تصویر می‌آید. رویکرد بیزی برای بازسازی تصویر با ترکیب همه چیزهایی که ممکن است قبلاً در مورد تصویر می‌دانید کار می‌کند – به عنوان مثال، اینکه لبه‌ها تمایل دارند صاف باشند یا ویژگی‌های خاصی باید پیوسته باشند – با داده‌های پر سر و صدایی که مشاهده می‌کنیم. با توجه به فرضیات قبلی شما، سعی می‌کند تصویر «تمیز» را پیدا کند که ممکن است منجر به چیزی شود که ما آن را نویز می‌بینیم.

  1. دانش قبلی: سپس در بازسازی تصویر بیزی به منظور مدل سازی آنچه که ما انتظار داریم تصویر تمیز از قبل شبیه به آن باشد استفاده می شود. برای مثال، تصاویر طبیعی در برخی قسمت‌ها صاف و در قسمت‌های دیگر دارای لبه‌های بالا هستند.
  2. احتمال: تابع احتمال، تصویر پر سر و صدا را به تصویر تمیز نگاشت می کند، و با آن، نحوه تأثیر نویز بر روی تصویر را ثبت می کند – به عنوان مثال، نویز گاوسی ممکن است تصویر را تار کند.
  3. توزیع خلفی: با قضیه بیز، ما قبل و احتمالات را با هم ترکیب می کنیم تا توزیع پسینی به دست آید که اکنون یک توزیع را به ما می دهد. توزیع احتمال بیش از تصاویر تمیز ممکن ما به دنبال تصویری هستیم که این احتمال عقبی را با آنچه تخمین MAP نامیده می شود، به حداکثر می رساند.
  4. زنجیره مارکوف مونت کارلو (MCMC): در عمل، یافتن توزیع پسین اغلب آسان نیست. بنابراین، استفاده از زنجیره مارکوف مونت کارلو تکنیک‌های (MCMC) برای نمونه‌برداری از توزیع، تخمین محتمل‌ترین تصویر تمیز، بسیار رایج است.

مثالی از حذف نویز تصویر بیزی

در این پیاده‌سازی، اجازه می‌دهیم روشی برای بهبود ساختار تصویر با استفاده از ترکیبی از شبیه‌سازی نویز گاوسی و روش‌های بیزی ببینیم. ابتدا نویز گاوسی را به تصاویر خاکستری اضافه می کنیم تا یک محیط نویز را شبیه سازی کنیم. زیرا فرآیند کاهش نویز از انتشار اطمینان برای اصلاح تصاویر پر سر و صدا و بازتولید پیام استفاده می کند. برای بهبود کیفیت تصویر با حفظ ویژگی‌ها و لبه‌ها، به نرمال‌سازی جهانی (TV)، کاهش نویز غیرمحلی (NLM) و آستانه موجک تکمیل می‌شود. و نتیجه نهایی ذخیره و نمایش داده می شود. که اثربخشی این تکنیک کاهش نویز چند وجهی را نشان می دهد.

#Importing necesssary libaries for denoising Image using Bayersain
import numpy as np
import cv2
from scipy.fft import fft2, ifft2
from skimage.restoration import denoise_tv_chambolle, denoise_wavelet, denoise_nl_means
from skimage.util import random_noise
from skimage import img_as_float, img_as_ubyte
# Define parameters for noise level, belief propagation, and denoising iterations

sigma2_init = 25 # Initial variance of noise
alpha_init = 0.01 # Initial alpha parameter
max_iterations = 20 # Maximum iterations for the EM algorithm
convergence_threshold = 1e-4 # Convergence threshold for belief propagation

# Function to add Gaussian noise to an image
# This simulates noise in the image for testing denoising techniques

def add_gaussian_noise(image, sigma):
noisy_image = image + np.random.normal(0, sigma, image.shape)
return np.clip(noisy_image, 0, 255)

# Function to compute belief propagation messages with adaptive convergence
# It calculates messages iteratively using Fourier transforms until convergence

def compute_messages(image, alpha, sigma2, prev_messages=None):
height, width = image.shape
messages = np.zeros((height, width)) if prev_messages is None else prev_messages
fft_image = fft2(image)

for _ in range(max_iterations):
fft_messages = fft2(messages)
new_messages = ifft2(fft_image * fft_messages * alpha).real
new_messages = np.clip(new_messages, 0, 255) # Clip to valid pixel range

# Check for convergence based on L2 norm
if np.linalg.norm(new_messages - messages) break

messages = new_messages
return messages

# Function for denoising using belief propagation and multiple advanced denoising methods
# This includes Total Variation (TV) regularization, Non-Local Means (NLM), and wavelet denoising

def bayesian_denoise(image, noisy_image, alpha, sigma2, max_iterations):
denoised_image = np.copy(noisy_image)
messages = None

for _ in range(max_iterations):
# Compute belief propagation messages
messages = compute_messages(denoised_image, alpha, sigma2, prev_messages=messages)

# Update the denoised image based on messages
denoised_image = (noisy_image + messages) / 2
denoised_image = np.clip(denoised_image, 0, 255)

# Apply Total Variation (TV) denoising to preserve edges
denoised_image = denoise_tv_chambolle(denoised_image, weight=0.1)

# Apply Non-Local Means (NLM) denoising for further noise reduction
denoised_image = denoise_nl_means(denoised_image, h=1.15 * sigma2, fast_mode=True)

# Optionally apply wavelet-based denoising
denoised_image = denoise_wavelet(denoised_image, mode='soft', wavelet_levels=3, method='BayesShrink')

return denoised_image

# Load the image, convert it to grayscale, and apply Gaussian noise to simulate a noisy image

image_path = "img_2.png"
image = cv2.imread(image_path, cv2.IMREAD_GRAYSCALE).astype(np.float32)

# Add Gaussian noise to simulate a noisy image
noisy_image = add_gaussian_noise(image, sigma=25)

# Perform Bayesian denoising on the noisy image using the specified techniques
denoised_image = bayesian_denoise(image, noisy_image, alpha_init, sigma2_init, max_iterations)
# Save and display the results
cv2.imwrite("denoised_image_enhanced.jpg", denoised_image)
cv2.imshow("Noisy Image", noisy_image.astype(np.uint8))
cv2.imshow("Denoised Image", denoised_image.astype(np.uint8))sssss
cv2.waitKey(0)
cv2.destroyAllWindows()

نتایج:

تصویر نویز در مقابل نویز حذف شده

PSNR (نسبت پیک سیگنال به نویز) یک معیار پرکاربرد برای اندازه گیری کیفیت تصاویر بازسازی شده یا پردازش شده است. با تصویر اصلی بدون تغییر مقایسه کنید. به خصوص در کار فشرده سازی تصویر. زوال و ترمیم برای ارزیابی محل لکه گیری یا اعوجاج در طول پردازش.

زمان محاسبه در مقابل اندازه تصویر و PSNR در مقابل اندازه تصویر

کاربرد: بازیابی تصویر پزشکی

یکی از جذاب ترین کاربردهای استنباط بیزی در تصویربرداری پزشکی است که در آن تصاویر تمیز بازیابی شده برای تشخیص بسیار مهم هستند.

به عنوان مثال، فرض کنید که یک سی تی اسکن در اثر نویز به دلیل حرکت بیمار یا محدودیت های سخت افزاری تخریب شده است. یک چارچوب بیزی می تواند این اسکن پر سر و صدا را به عنوان داده های مشاهده شده و دانش قبلی از ساختار معمولی بدن – صاف بودن لبه ها یا اشکال منظم اندام – برای بازسازی تصویر اصلی و تمیز در نظر بگیرد. این به ویژه در توموگرافی بیزی مفید است، جایی که هدف بازسازی ساختار سه بعدی یک شی است – که ممکن است شبیه بدن انسان باشد – از تصاویر دو بعدی پر سر و صدا.

به این ترتیب خروجی چندین اسکن نویزدار گرفته می شود و با روش های بیزی می توان تصاویری با وضوح بالا و بدون نویز که برای پزشکان بسیار مفیدتر است، بازیابی کرد. بدین ترتیب، شانس تشخیص دقیق به حداکثر می رسد و اسکن هایی که در غیر این صورت ممکن است از طریق تشعشع گران یا حتی خطرناک باشند به حداقل می رسد.

مسائل معکوس بیزی: بازسازی تصویر ماهواره ای

یکی دیگر از کاربردهای جالب بازسازی تصویر بیزی در تصاویر ماهواره ای است. ماهواره ها اغلب در شرایط نامناسب عکس می گیرند. به عنوان مثال، آب و هوای ابری، محیط های کم نور، یا آب و هوای نامناسب اغلب می تواند منجر به تصاویر پر سر و صدایی شود که تفسیر آنها سخت است یا اطلاعاتی با قابلیت اطمینان تعریف نشده حمل می کنند.

استنتاج بیزی با مدل‌سازی نویز و استفاده از دانش قبلی در مورد سطح زمین به منظور استنتاج محتمل‌ترین تصویر تمیز، مشکل را حل می‌کند. به عنوان مثال، می دانیم که برخی از مناطق خشکی، مانند اقیانوس ها یا بیابان ها، تمایل به بافت صاف دارند، در حالی که مناطق شهری دارای لبه های تیز و کاملاً مشخص هستند. سپس با استفاده از چارچوب بیزی، می‌توانیم یک تصویر تمیز را بازسازی کنیم تا حتی پس از داده‌های پر سر و صدا، بسیار شبیه منظره واقعی باشد.

این نرم افزار در نظارت بر تغییرات ایجاد شده توسط محیط، ردیابی جنگل های قطع شده یا حتی ارزیابی آسیب های ناشی از بلایای طبیعی که نیاز به تصاویر به موقع و دقیق از فضا دارد بسیار مفید است.

مزایای بازسازی تصویر بیزی

رویکرد احتمال بر خلاف روش‌های دیگر، استنتاج بیزی یک تخمین احتمالی از تصویر تمیز ارائه می‌کند، بنابراین عدم قطعیت در بازسازی می‌تواند کمیت شود. این ارزش زمانی است که با برنامه‌هایی مانند پزشکی برخورد می‌کنید، جایی که دانستن سطح اطمینان یک تصویر می‌تواند به تصمیم‌گیری کمک کند.
ثبت اطلاعات قبلی: روش‌های بیزی امکان استفاده از دانش قبلی در مورد تصویر را فراهم می‌کنند که منجر به بازسازی دقیق‌تر می‌شود. برای مثال، در تصویربرداری پزشکی، ممکن است از اطلاعات قبلی در مورد ساختارهای تشریحی معمولی برای هدایت فرآیند بازسازی استفاده کنیم.

– تطبیق پذیری: رویکرد بیزی را می توان با طیف گسترده ای از مشکلات تصویربرداری، از اسکن پزشکی گرفته تا عکس های ماهواره ای، تطبیق داد، بنابراین آن را به ابزاری همه کاره برای حل مشکلات بازسازی تصویر در حوزه های مختلف تبدیل می کند.

استنتاج بیزی اجازه می دهد تا چارچوب های قوی در برخورد با بازسازی های نویز داده ها ایجاد شود. بنابراین، ما با ترکیب دانش قبلی که در مورد تصویر داریم، یک تصویر تمیز به احتمال زیاد از مشاهدات پر سر و صدا استنتاج می کنیم. بنابراین روش‌های بیزی در همه کاربردها، از تصویربرداری پزشکی گرفته تا تصویربرداری ماهواره‌ای، بسیار مهم هستند، زیرا در پاک‌سازی داده‌های پر سر و صدا انعطاف‌پذیر و دقیق هستند.

با پیشرفت در فناوری محاسباتی مانند MCMC، همراه با الگوریتم‌های بهتر، روش‌های بیزی حتی راحت‌تر اعمال می‌شوند و منجر به بهبود عملکرد نسبت به روش‌های بازسازی کلاسیک تصاویر می‌شوند.

هر حوزه کاربردی که باشد – نظارت بر محیط زیست یا نجوم – استنتاج بیزی ممکن است به ابزاری برای استخراج اطلاعات ارزشمند از داده های پر سر و صدا و پراکنده تبدیل شود که منجر به افزایش بینش و در نتیجه تصمیم گیری بهتر می شود.

لطفا نظرات خود را در بخش نظرات به اشتراک بگذارید. پیشنهادات شما همیشه استقبال می شود.

منتشر شده از طریق به سمت هوش مصنوعی



منبع: https://towardsai.net/p/machine-learning/reconstruction-of-clean-images-from-noisy-data-a-bayesian-inference-perspective