Files
2024-09-02 16:45:42 +08:00

55 lines
1.5 KiB
Python

import cv2 as cv
import matplotlib.pyplot as plt
import numpy as np
def global_linear_transmation(im, c=0, d=255):
img = im.copy()
maxV = img.max()
minV = img.min()
if maxV == minV:
return np.uint8(img)
for i in range(img.shape[0]):
for j in range(img.shape[1]):
img[i, j] = ((d - c) / (maxV - minV)) * (img[i, j] - minV) + c
return np.uint8(img)
def histogram_equalization(im):
return np.uint8(cv.equalizeHist(im))
if __name__ == "__main__":
im = cv.imread(r"img\iris.jpg", cv.IMREAD_GRAYSCALE)
im1 = global_linear_transmation(im, 0, 150)
im2 = global_linear_transmation(im, 100)
im3 = global_linear_transmation(im, 50, 150)
im4 = histogram_equalization(im)
plt.figure()
plt.subplot(241)
plt.imshow(im1, cmap="gray")
plt.title("darker")
plt.axis("off")
plt.subplot(242)
plt.imshow(im2, cmap="gray")
plt.title("brighter")
plt.axis("off")
plt.subplot(243)
plt.imshow(im3, cmap="gray")
plt.title("lower contrast")
plt.axis("off")
plt.subplot(244)
plt.imshow(im4, cmap="gray")
plt.title("equalized")
plt.axis("off")
plt.subplot(245)
plt.hist(im1.flatten(), 256, [0, 256]) # type: ignore
plt.subplot(246)
plt.hist(im2.flatten(), 256, [0, 256]) # type: ignore
plt.subplot(247)
plt.hist(im3.flatten(), 256, [0, 256]) # type: ignore
plt.subplot(248)
plt.hist(im4.flatten(), 256, [0, 256]) # type: ignore
plt.tight_layout()
plt.show()