diff --git a/1/1.py b/1/1.py new file mode 100644 index 0000000..f8bb4d2 --- /dev/null +++ b/1/1.py @@ -0,0 +1,18 @@ +from matplotlib import pyplot as plt +from PIL import Image + +plt.rcParams["font.sans-serif"] = ["SimSun"] + +pil_im = Image.open("images/house.jpg") +pil_im1 = Image.open("images/house.jpg").convert("L") + +plt.figure() +plt.subplot(121) +plt.title("原图") +plt.axis("off") +plt.imshow(pil_im) +plt.subplot(122) +plt.title("灰度图") +plt.axis("off") +plt.imshow(pil_im1, cmap="gray") +plt.show() diff --git a/1/2.py b/1/2.py new file mode 100644 index 0000000..e295a68 --- /dev/null +++ b/1/2.py @@ -0,0 +1,28 @@ +from PIL import Image + + +def IsValidImage(img_path): + bValid = True + try: + Image.open(img_path).verify() + except: + bValid = False + return bValid + + +def transimg(img_path): + if IsValidImage(img_path): + try: + str = img_path.rsplit(".", 1) + output_img_path = str[0] + ".jpg" + print(output_img_path) + im = Image.open(img_path) + im.save(output_img_path) + return True + except: + return False + + +if __name__ == "__main__": + img_path = "images/lena.png" + print(transimg(img_path)) diff --git a/1/3.py b/1/3.py new file mode 100644 index 0000000..6922231 --- /dev/null +++ b/1/3.py @@ -0,0 +1,27 @@ +import numpy as np +from matplotlib import pyplot as plt +from PIL import Image + +im = np.array(Image.open("images/house.jpg").convert("L")) +im2 = 255 - im +print("对图像进行反向处理:\n", int(im.min()), int(im.max())) +im3 = (100.0 / 255) * im + 100 +print("将图像像素值变换到100...200区间:\n", int(im3.min()), int(im3.max())) +im4 = 255.0 * (im / 255.0) ** 2 +print("对像素值求平方后得到的图像:\n", int(im4.min()), int(im4.max())) + +plt.figure() +plt.gray() +plt.subplot(131) +plt.title("f(x) = 255 - x") +plt.imshow(im2) +plt.axis("off") +plt.subplot(132) +plt.title("f(x) = 100 / 255 * x + 100") +plt.imshow(im3) +plt.axis("off") +plt.subplot(133) +plt.title("f(x) = 255 * (x / 255) ^ 2") +plt.imshow(im4) +plt.axis("off") +plt.show() diff --git a/1/4.py b/1/4.py new file mode 100644 index 0000000..fb52796 --- /dev/null +++ b/1/4.py @@ -0,0 +1,25 @@ +import numpy as np +from matplotlib import pyplot as plt +from matplotlib.font_manager import FontProperties +from PIL import Image +from scipy.ndimage import filters + +plt.rcParams["font.sans-serif"] = ["SimSun"] +im = np.array(Image.open("images/house.jpg").convert("L")) + +plt.figure() +plt.gray() +plt.subplot(141) +plt.title("原图") +plt.axis("off") +plt.imshow(im, cmap="gray") +for bi, blur in enumerate([2, 4, 8]): + im2 = np.zeros(im.shape) + im2 = filters.gaussian_filter(im, blur) # type: ignore + im2 = np.uint8(im2) + imNum = str(blur) + plt.subplot(1, 4, 2 + bi) + plt.axis("off") + plt.title("标准差为 " + imNum) + plt.imshow(im2) +plt.show() diff --git a/1/5.py b/1/5.py new file mode 100644 index 0000000..2587cc0 --- /dev/null +++ b/1/5.py @@ -0,0 +1,31 @@ +import numpy as np +from matplotlib import pyplot as plt +from scipy.ndimage import filters +from skimage.restoration import denoise_tv_chambolle + +# import PCV.tools as rof + +plt.rcParams["font.sans-serif"] = ["SimSun"] +im = np.zeros((500, 500)) +im[100:400, 100:400] = 128 +im[200:300, 200:300] = 255 +im = im + 30 * np.random.standard_normal((500, 500)) +U = denoise_tv_chambolle(im, weight=0.1) +# U, T = rof.denoise(im, im) +G = filters.gaussian_filter(im, 10) # type: ignore + +plt.figure() +plt.gray() +plt.subplot(131) +plt.title("原噪声图像") +plt.axis("off") +plt.imshow(im) +plt.subplot(132) +plt.title("高斯模糊后的图像") +plt.axis("off") +plt.imshow(G) +plt.subplot(133) +plt.title("ROF 降噪后的图像") +plt.axis("off") +plt.imshow(U) +plt.show() diff --git a/images/house.jpg b/images/house.jpg new file mode 100644 index 0000000..1f94b3f Binary files /dev/null and b/images/house.jpg differ diff --git a/images/house2.jpg b/images/house2.jpg new file mode 100644 index 0000000..99725bd Binary files /dev/null and b/images/house2.jpg differ diff --git a/images/lena.jpg b/images/lena.jpg new file mode 100644 index 0000000..00a38dc Binary files /dev/null and b/images/lena.jpg differ diff --git a/images/lena.png b/images/lena.png new file mode 100644 index 0000000..bb812d3 Binary files /dev/null and b/images/lena.png differ