generated from Hazel/python-project
stuff
This commit is contained in:
parent
37a5da37b0
commit
54a2138746
@ -41,7 +41,6 @@ def generate_kernel(radius, sigma=None):
|
||||
size = 2 * radius + 1
|
||||
if sigma is None:
|
||||
sigma = radius / 3.0 # Common default choice
|
||||
|
||||
print(f"radius: {radius}, sigma: {sigma}")
|
||||
|
||||
# Create a grid of (x,y) coordinates
|
||||
@ -113,6 +112,7 @@ class KernelVisualizer(QWidget):
|
||||
super().__init__()
|
||||
self.setWindowTitle("Gaussian Kernel Visualizer")
|
||||
self.image = None
|
||||
self.deconvolved = None
|
||||
|
||||
self.load_button = QPushButton("Load Image")
|
||||
self.load_button.clicked.connect(self.load_image)
|
||||
@ -125,8 +125,8 @@ class KernelVisualizer(QWidget):
|
||||
self.sigma_slider.setRange(1, 300)
|
||||
self.sigma_slider.setValue(15)
|
||||
|
||||
# self.radius_slider.valueChanged.connect(self.update_visualization)
|
||||
# self.sigma_slider.valueChanged.connect(self.update_visualization)
|
||||
self.radius_slider.valueChanged.connect(self.update_visualization)
|
||||
self.sigma_slider.valueChanged.connect(self.update_visualization)
|
||||
|
||||
self.kernel_fig = Figure(figsize=(3, 3))
|
||||
self.kernel_canvas = FigureCanvas(self.kernel_fig)
|
||||
@ -139,7 +139,7 @@ class KernelVisualizer(QWidget):
|
||||
self.iter_slider.setValue(10)
|
||||
|
||||
self.apply_button = QPushButton("Do Deconvolution.")
|
||||
self.apply_button.clicked.connect(self.update_visualization)
|
||||
self.apply_button.clicked.connect(self.apply_kernel)
|
||||
|
||||
layout = QVBoxLayout()
|
||||
layout.addWidget(self.load_button)
|
||||
@ -188,12 +188,26 @@ class KernelVisualizer(QWidget):
|
||||
img = cv2.imread(image_path)
|
||||
if img is not None:
|
||||
self.image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
|
||||
self.image = cv2.resize(self.image, (200, 200))
|
||||
self.update_visualization()
|
||||
|
||||
def apply_kernel(self):
|
||||
radius = self.radius_slider.value()
|
||||
sigma = self.sigma_slider.value() / 10.0
|
||||
iterations = self.iter_slider.value()
|
||||
|
||||
kernel = generate_kernel(radius, sigma)
|
||||
|
||||
self.deconvolved = richardson_lucy(self.image, kernel, iterations=iterations)
|
||||
|
||||
self.update_visualization()
|
||||
|
||||
def update_visualization(self):
|
||||
radius = self.radius_slider.value()
|
||||
sigma = self.sigma_slider.value() / 10.0 * (radius / 3)
|
||||
kernel = generate_kernel(radius, sigma)
|
||||
iterations = self.iter_slider.value()
|
||||
|
||||
|
||||
# Kernel Visualization
|
||||
self.kernel_fig.clear()
|
||||
@ -204,30 +218,17 @@ class KernelVisualizer(QWidget):
|
||||
self.kernel_canvas.draw()
|
||||
|
||||
if self.image is not None:
|
||||
radius = self.radius_slider.value()
|
||||
sigma = self.sigma_slider.value() / 10.0
|
||||
iterations = self.iter_slider.value()
|
||||
|
||||
kernel = generate_kernel(radius, sigma)
|
||||
blurred = cv2.filter2D(self.image, -1, kernel)
|
||||
|
||||
deconvolved = richardson_lucy(blurred, kernel, iterations=iterations)
|
||||
|
||||
self.image_fig.clear()
|
||||
ax1 = self.image_fig.add_subplot(131)
|
||||
ax1.imshow(self.image, cmap='gray')
|
||||
ax1.set_title("Original")
|
||||
ax1.axis('off')
|
||||
|
||||
ax2 = self.image_fig.add_subplot(132)
|
||||
ax2.imshow(blurred, cmap='gray')
|
||||
ax2.set_title("Blurred")
|
||||
ax2.axis('off')
|
||||
|
||||
ax3 = self.image_fig.add_subplot(133)
|
||||
ax3.imshow(deconvolved, cmap='gray')
|
||||
ax3.set_title(f"Deconvolved (RL, {iterations} iter)")
|
||||
ax3.axis('off')
|
||||
if self.deconvolved is not None:
|
||||
ax3 = self.image_fig.add_subplot(133)
|
||||
ax3.imshow(self.deconvolved, cmap='gray')
|
||||
ax3.set_title(f"Deconvolved (RL, {iterations} iter)")
|
||||
ax3.axis('off')
|
||||
|
||||
self.image_canvas.draw()
|
||||
else:
|
||||
|
Loading…
x
Reference in New Issue
Block a user