summary refs log tree commit diff stats
path: root/opencv/code/a5.py
diff options
context:
space:
mode:
Diffstat (limited to 'opencv/code/a5.py')
-rw-r--r--opencv/code/a5.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/opencv/code/a5.py b/opencv/code/a5.py
new file mode 100644
index 0000000..52e56c5
--- /dev/null
+++ b/opencv/code/a5.py
@@ -0,0 +1,42 @@
+import cv2
+import numpy as np
+
+image = cv2.imread("4i.jpg", cv2.IMREAD_GRAYSCALE)
+
+# Image Negative
+negative_image = 255 - image
+cv2.imwrite("5.negative.jpg", negative_image)
+
+# Log Transformation
+c = 255 / np.log(1 + np.max(image))
+log_transformed = c * np.log1p(1.0 + image)
+log_transformed = np.uint8(log_transformed)
+cv2.imwrite("5.log.jpg", log_transformed)
+
+# Power Law Transform
+gamma = 0.5
+power_law_transformed = np.power(image, gamma)
+power_law_transformed = cv2.normalize(
+    power_law_transformed, None, 0, 255, cv2.NORM_MINMAX
+)
+power_law_transformed = np.uint8(power_law_transformed)
+cv2.imwrite("5.power_law.jpg", power_law_transformed)
+
+
+# Piecewise Linear Transform
+def piecewise_linear(x):
+    return np.piecewise(
+        x,
+        [x < 50, (x >= 50) & (x < 100), (x >= 100) & (x < 150), x >= 150],
+        [
+            lambda x: 0,
+            lambda x: 255 * ((x - 50) / (100 - 50)),
+            lambda x: 255,
+            lambda x: 255 * ((255 - x) / (255 - 150)),
+        ],
+    )
+
+
+piecewise_transformed = piecewise_linear(image)
+piecewise_transformed = np.uint8(piecewise_transformed)
+cv2.imwrite("5.piecewise.jpg", piecewise_transformed)