Commit 28efc3c1 authored by 袁通's avatar 袁通
Browse files

update LAB6

parent 02cfe39c
Loading
Loading
Loading
Loading
+5 KiB (108 KiB)

File changed.

No diff preview for this file type.

+68 −0
Original line number Diff line number Diff line
import numpy as np
import numpy.fft
from skimage import io, data
import math
from scipy import interpolate
import matplotlib.pyplot as plt
from matplotlib import cm
import matplotlib.image as mplimg
import EE326_SUSTech as ee


def adaptive_11810818(input_image, n_size, smax):
    input_image = io.imread(input_image + ".tiff")
    output_image = np.zeros(input_image.shape, dtype=np.uint8)
    m, n = input_image.shape

    for i in range(m):
        for j in range(n):
            n_size_2 = n_size

            while True:
                step = (int)((n_size_2 - 1) / 2)
                pixels = np.zeros(n_size_2 * n_size_2)

                for i2 in range(n_size_2):
                    for j2 in range(n_size_2):
                        if i - step + i2 >= 0 \
                                and i - step + i2 < input_image.shape[0] \
                                and j - step + j2 >= 0 \
                                and j - step + j2 < input_image.shape[0]:
                            pixels[j2 * n_size_2 + i2] = input_image[i - step + i2, j - step + j2]

                pixels_sorted = np.sort(pixels)
                med = (int)((n_size_2 * n_size_2-1)/2)
                a1 = pixels_sorted[med] - pixels_sorted[0]
                a2 = pixels_sorted[med] - pixels_sorted[n_size_2 * n_size_2-1]
                if(a1>0 and a2<0):
                    b1 = input_image[i, j] - pixels_sorted[0]
                    b2 = input_image[i, j] - pixels_sorted[n_size_2 * n_size_2-1]
                    if(b1>0 and b2<0):
                        output_image[i, j] = pixels[med]
                    else:
                        output_image[i, j] = pixels_sorted[med]
                    break
                else:
                    if(n_size_2 < smax):
                        n_size_2 += 2
                    else:
                        output_image[i, j] = pixels_sorted[med]
                        break

    return output_image

if __name__ == '__main__':
    for i in [1
        , 2
        , 3
        , 4
              ]:
        input_image = "Q6_1_" + str(i)
        output_name = "plots/" + str(input_image) + "_adaptive.png"
        output_image = adaptive_11810818(input_image, 3, 20)

        mplimg.imsave(output_name,
                      output_image,
                      cmap=cm.gray)

        print("Finish processing " + str(i))
 No newline at end of file
+4.3 KiB
Loading image diff...
+0 −28
Original line number Diff line number Diff line
import numpy as np
import numpy.fft
from skimage import io, data
import math
from scipy import interpolate
import matplotlib.pyplot as plt
from matplotlib import cm
import matplotlib.image as mplimg
import EE326_SUSTech as ee


def denoise_11810818(input_image, n_size, mode):
    output_name = "plots/" + str(input_image) + "_denoised.png"
    input_image = io.imread(input_image+".tiff")

    for i in mode:
        output_image = ee.denoise_filter(input_image, n_size, i)

    mplimg.imsave(output_name,
                  output_image,
                  cmap=cm.gray)


if __name__ == '__main__':
    # denoise_11810818("Q6_1_1", 3, ["medium"])
    # denoise_11810818("Q6_1_2", 5, ["medium"])
    denoise_11810818("Q6_1_3", 9, ["medium"])
    # denoise_11810818("Q6_1_4", 9, ["medium"])
+2.95 KiB
Loading image diff...
Loading