Commit 1b690a48 authored by 袁通's avatar 袁通
Browse files

update lab 6

parent ff973fd2
Loading
Loading
Loading
Loading
(22 KiB)

File changed.

No diff preview for this file type.

(14 KiB)

File changed.

No diff preview for this file type.

+167 −0
Original line number Diff line number Diff line
\begin{Verbatim}[commandchars=\\\{\}]
\PYG{k+kn}{import} \PYG{n+nn}{numpy} \PYG{k}{as} \PYG{n+nn}{np}
\PYG{k+kn}{import} \PYG{n+nn}{numpy.fft}
\PYG{k+kn}{from} \PYG{n+nn}{skimage} \PYG{k+kn}{import} \PYG{n}{io}\PYG{p}{,} \PYG{n}{data}
\PYG{k+kn}{import} \PYG{n+nn}{math}
\PYG{k+kn}{from} \PYG{n+nn}{scipy} \PYG{k+kn}{import} \PYG{n}{interpolate}
\PYG{k+kn}{import} \PYG{n+nn}{matplotlib.pyplot} \PYG{k}{as} \PYG{n+nn}{plt}
\PYG{k+kn}{from} \PYG{n+nn}{matplotlib} \PYG{k+kn}{import} \PYG{n}{cm}
\PYG{k+kn}{import} \PYG{n+nn}{matplotlib.image} \PYG{k}{as} \PYG{n+nn}{mplimg}
\PYG{k+kn}{import} \PYG{n+nn}{EE326\PYGZus{}SUSTech} \PYG{k}{as} \PYG{n+nn}{ee}
\PYG{k+kn}{import} \PYG{n+nn}{adaptive\PYGZus{}filter\PYGZus{}11810818} \PYG{k}{as} \PYG{n+nn}{ada}


\PYG{k}{def} \PYG{n+nf}{undergo}\PYG{p}{(}\PYG{n}{a}\PYG{p}{,} \PYG{n}{b}\PYG{p}{,} \PYG{n}{u}\PYG{p}{,} \PYG{n}{v}\PYG{p}{,} \PYG{n}{T}\PYG{p}{):}
    \PYG{n}{u}\PYG{p}{,} \PYG{n}{v} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{meshgrid}\PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{linspace}\PYG{p}{(}\PYG{l+m+mi}{1}\PYG{p}{,} \PYG{n}{u}\PYG{p}{,} \PYG{n}{u}\PYG{p}{),} \PYG{n}{np}\PYG{o}{.}\PYG{n}{linspace}\PYG{p}{(}\PYG{l+m+mi}{1}\PYG{p}{,} \PYG{n}{v}\PYG{p}{,} \PYG{n}{v}\PYG{p}{))}
    \PYG{n}{d} \PYG{o}{=} \PYG{n}{a} \PYG{o}{*} \PYG{n}{u} \PYG{o}{+} \PYG{n}{b} \PYG{o}{*} \PYG{n}{v}
    \PYG{c+c1}{\PYGZsh{} h = (T / (np.pi * d)) * np.sin(np.pi * d) * np.exp(\PYGZhy{}1j*(np.pi * d))}
    \PYG{n}{h} \PYG{o}{=} \PYG{p}{(}\PYG{n}{T} \PYG{o}{/} \PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{pi} \PYG{o}{*} \PYG{n}{d}\PYG{p}{))} \PYG{o}{*} \PYG{n}{np}\PYG{o}{.}\PYG{n}{sin}\PYG{p}{(}\PYG{n}{d} \PYG{o}{*} \PYG{n}{np}\PYG{o}{.}\PYG{n}{pi}\PYG{p}{)} \PYG{o}{*} \PYG{n}{np}\PYG{o}{.}\PYG{n}{exp}\PYG{p}{(}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1} \PYG{o}{*} \PYG{l+m+mi}{1}\PYG{n}{j} \PYG{o}{*} \PYG{n}{np}\PYG{o}{.}\PYG{n}{pi} \PYG{o}{*} \PYG{n}{d}\PYG{p}{)}

    \PYG{k}{return} \PYG{n}{h}



\PYG{k}{def} \PYG{n+nf}{radially\PYGZus{}limited\PYGZus{}inverse\PYGZus{}filtering\PYGZus{}11810818}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{,} \PYG{n}{sigma}\PYG{p}{):}
    \PYG{n}{input\PYGZus{}name} \PYG{o}{=} \PYG{n}{input\PYGZus{}image}
    \PYG{n}{input\PYGZus{}image} \PYG{o}{=} \PYG{n}{io}\PYG{o}{.}\PYG{n}{imread}\PYG{p}{(}\PYG{n}{input\PYGZus{}image} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}.tiff\PYGZdq{}}\PYG{p}{)}

    \PYG{c+c1}{\PYGZsh{} input\PYGZus{}image = ada.adaptive\PYGZus{}11810818(input\PYGZus{}image, 3, 30)}

    \PYG{n}{m}\PYG{p}{,} \PYG{n}{n} \PYG{o}{=} \PYG{n}{input\PYGZus{}image}\PYG{o}{.}\PYG{n}{shape}
    \PYG{c+c1}{\PYGZsh{} input\PYGZus{}image = np.pad(input\PYGZus{}image, ((0, m), (0, n)))}
    \PYG{c+c1}{\PYGZsh{} m, n = input\PYGZus{}image.shape}

    \PYG{n+nb}{filter} \PYG{o}{=} \PYG{n}{undergo}\PYG{p}{(}\PYG{l+m+mf}{0.1}\PYG{p}{,} \PYG{l+m+mf}{0.1}\PYG{p}{,} \PYG{n}{m}\PYG{p}{,} \PYG{n}{n}\PYG{p}{,} \PYG{l+m+mi}{1}\PYG{p}{)}
    \PYG{n}{inverse\PYGZus{}filter} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{reciprocal}\PYG{p}{(}\PYG{n+nb}{filter}\PYG{p}{)}
    \PYG{n}{g} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{gaussian\PYGZus{}filter}\PYG{p}{(}\PYG{n}{m}\PYG{p}{,} \PYG{n}{n}\PYG{p}{,} \PYG{n}{sigma}\PYG{p}{)}

    \PYG{n}{input\PYGZus{}image} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{fft2}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{)}
    \PYG{n}{input\PYGZus{}image} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{fftshift}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{)}

    \PYG{n}{input\PYGZus{}image} \PYG{o}{=} \PYG{n}{input\PYGZus{}image} \PYG{o}{*} \PYG{n}{inverse\PYGZus{}filter} \PYG{o}{*} \PYG{n}{g}
    \PYG{c+c1}{\PYGZsh{} input\PYGZus{}image = input\PYGZus{}image * inverse\PYGZus{}filter}

    \PYG{n}{input\PYGZus{}image} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{ifftshift}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{)}
    \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{real}\PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{ifft2}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{))}

    \PYG{k}{return} \PYG{n}{output\PYGZus{}image}


\PYG{k}{def} \PYG{n+nf}{wiener\PYGZus{}filter\PYGZus{}11810818}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{,} \PYG{n}{sigma}\PYG{p}{,} \PYG{n}{k}\PYG{p}{):}
    \PYG{n}{input\PYGZus{}image} \PYG{o}{=} \PYG{n}{io}\PYG{o}{.}\PYG{n}{imread}\PYG{p}{(}\PYG{n}{input\PYGZus{}image} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}.tiff\PYGZdq{}}\PYG{p}{)}
    \PYG{c+c1}{\PYGZsh{} input\PYGZus{}image = ada.adaptive\PYGZus{}11810818(input\PYGZus{}image, 3, 30)}
    \PYG{n}{m}\PYG{p}{,} \PYG{n}{n} \PYG{o}{=} \PYG{n}{input\PYGZus{}image}\PYG{o}{.}\PYG{n}{shape}
    \PYG{c+c1}{\PYGZsh{} input\PYGZus{}image = np.pad(input\PYGZus{}image, ((0, m), (0, n)))}
    \PYG{c+c1}{\PYGZsh{} m, n = input\PYGZus{}image.shape}

    \PYG{n}{g} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{gaussian\PYGZus{}filter}\PYG{p}{(}\PYG{n}{m}\PYG{p}{,} \PYG{n}{n}\PYG{p}{,} \PYG{n}{sigma}\PYG{p}{)}
    \PYG{n+nb}{filter} \PYG{o}{=} \PYG{n}{undergo}\PYG{p}{(}\PYG{l+m+mf}{0.1}\PYG{p}{,} \PYG{l+m+mf}{0.1}\PYG{p}{,} \PYG{n}{m}\PYG{p}{,} \PYG{n}{n}\PYG{p}{,} \PYG{l+m+mi}{1}\PYG{p}{)}

    \PYG{c+c1}{\PYGZsh{} f = ((1/filter)*(filter*np.conj(filter)/(filter*np.conj(filter) + k))) * g}
    \PYG{c+c1}{\PYGZsh{} f = ((filter * np.conj(filter) / (filter * np.conj(filter) + k)))}

    \PYG{n}{buf} \PYG{o}{=} \PYG{n+nb}{filter} \PYG{o}{*} \PYG{n}{np}\PYG{o}{.}\PYG{n}{conj}\PYG{p}{(}\PYG{n+nb}{filter}\PYG{p}{)}
    \PYG{n}{f} \PYG{o}{=} \PYG{n}{buf} \PYG{o}{/} \PYG{p}{(}\PYG{n+nb}{filter} \PYG{o}{*} \PYG{p}{(}\PYG{n}{buf} \PYG{o}{+} \PYG{n}{k}\PYG{p}{))} \PYG{o}{*} \PYG{n}{g}

    \PYG{n}{input\PYGZus{}image} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{fft2}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{)}
    \PYG{n}{input\PYGZus{}image} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{fftshift}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{)}

    \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{input\PYGZus{}image} \PYG{o}{*} \PYG{n}{f}

    \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{ifftshift}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{)}
    \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{ifft2}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{)}
    \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{real}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{)}

    \PYG{k}{return} \PYG{n}{output\PYGZus{}image}


\PYG{k}{def} \PYG{n+nf}{test\PYGZus{}image}\PYG{p}{():}
    \PYG{n}{test} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{ones}\PYG{p}{([}\PYG{l+m+mi}{100}\PYG{p}{,} \PYG{l+m+mi}{100}\PYG{p}{])}\PYG{o}{*}\PYG{l+m+mi}{255}
    \PYG{n}{test}\PYG{p}{[}\PYG{l+m+mi}{49}\PYG{p}{:}\PYG{l+m+mi}{51}\PYG{p}{,} \PYG{l+m+mi}{49}\PYG{p}{:}\PYG{l+m+mi}{51}\PYG{p}{]} \PYG{o}{=} \PYG{p}{[[}\PYG{l+m+mi}{0}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{],} \PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{,} \PYG{l+m+mi}{0}\PYG{p}{]]}

    \PYG{n}{mplimg}\PYG{o}{.}\PYG{n}{imsave}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}test\PYGZus{}input.png\PYGZdq{}}\PYG{p}{,}
                  \PYG{n}{test}\PYG{p}{,}
                  \PYG{n}{cmap}\PYG{o}{=}\PYG{n}{cm}\PYG{o}{.}\PYG{n}{gray}\PYG{p}{)}

    \PYG{n+nb}{filter} \PYG{o}{=} \PYG{n}{undergo}\PYG{p}{(}\PYG{l+m+mf}{0.1}\PYG{p}{,} \PYG{l+m+mf}{0.1}\PYG{p}{,} \PYG{l+m+mi}{100}\PYG{p}{,} \PYG{l+m+mi}{100}\PYG{p}{,} \PYG{l+m+mi}{1}\PYG{p}{)}
    \PYG{n}{test} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{fftshift}\PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{fft2}\PYG{p}{(}\PYG{n}{test}\PYG{p}{))}
    \PYG{n}{test} \PYG{o}{=} \PYG{n}{test} \PYG{o}{*} \PYG{n+nb}{filter}
    \PYG{n}{test} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{ifft2}\PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{fftshift}\PYG{p}{(}\PYG{n}{test}\PYG{p}{))}
    \PYG{n}{test} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{abs}\PYG{p}{(}\PYG{n}{test}\PYG{p}{)}

    \PYG{n}{mplimg}\PYG{o}{.}\PYG{n}{imsave}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}test\PYGZus{}input\PYGZus{}burl.png\PYGZdq{}}\PYG{p}{,}
                  \PYG{n}{np}\PYG{o}{.}\PYG{n}{real}\PYG{p}{(}\PYG{n}{test}\PYG{p}{),}
                  \PYG{n}{cmap}\PYG{o}{=}\PYG{n}{cm}\PYG{o}{.}\PYG{n}{gray}\PYG{p}{)}

    \PYG{n}{buf} \PYG{o}{=} \PYG{n+nb}{filter} \PYG{o}{*} \PYG{n}{np}\PYG{o}{.}\PYG{n}{conj}\PYG{p}{(}\PYG{n+nb}{filter}\PYG{p}{)}
    \PYG{n}{f} \PYG{o}{=} \PYG{n}{buf} \PYG{o}{/} \PYG{p}{(}\PYG{n+nb}{filter} \PYG{o}{*} \PYG{p}{(}\PYG{n}{buf} \PYG{o}{+} \PYG{l+m+mf}{0.000000025}\PYG{p}{))}

    \PYG{n}{test} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{fftshift}\PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{fft2}\PYG{p}{(}\PYG{n}{test}\PYG{p}{))}
    \PYG{n}{test} \PYG{o}{=} \PYG{n}{test} \PYG{o}{*} \PYG{n}{f}
    \PYG{n}{test} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{ifft2}\PYG{p}{(}\PYG{n}{np}\PYG{o}{.}\PYG{n}{fft}\PYG{o}{.}\PYG{n}{ifftshift}\PYG{p}{(}\PYG{n}{test}\PYG{p}{))}

    \PYG{n}{mplimg}\PYG{o}{.}\PYG{n}{imsave}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}test\PYGZus{}input\PYGZus{}restore\PYGZus{}winber.png\PYGZdq{}}\PYG{p}{,}
                  \PYG{n}{np}\PYG{o}{.}\PYG{n}{real}\PYG{p}{(}\PYG{n}{test}\PYG{p}{),}
                  \PYG{n}{cmap}\PYG{o}{=}\PYG{n}{cm}\PYG{o}{.}\PYG{n}{gray}\PYG{p}{)}



\PYG{k}{def} \PYG{n+nf}{denoise1}\PYG{p}{():}
    \PYG{k}{for} \PYG{n}{input\PYGZus{}name} \PYG{o+ow}{in} \PYG{p}{[}\PYG{l+s+s2}{\PYGZdq{}Q6\PYGZus{}3\PYGZus{}2\PYGZdq{}}\PYG{p}{,} \PYG{l+s+s2}{\PYGZdq{}Q6\PYGZus{}3\PYGZus{}3\PYGZdq{}}\PYG{p}{]:}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{adaptive\PYGZus{}filter}\PYG{p}{(}\PYG{n}{io}\PYG{o}{.}\PYG{n}{imread}\PYG{p}{(}\PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{)}\PYG{o}{+}\PYG{l+s+s2}{\PYGZdq{}.tiff\PYGZdq{}}\PYG{p}{),} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish denoise 1 \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{))}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{adaptive\PYGZus{}filter}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish denoise 2 \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{))}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{adaptive\PYGZus{}filter}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish denoise 3 \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{))}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{adaptive\PYGZus{}filter}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{)}
        \PYG{n}{mplimg}\PYG{o}{.}\PYG{n}{imsave}\PYG{p}{(}\PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{)} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}.png\PYGZdq{}}\PYG{p}{,}
                      \PYG{n}{output\PYGZus{}image}\PYG{p}{,}
                      \PYG{n}{cmap}\PYG{o}{=}\PYG{n}{cm}\PYG{o}{.}\PYG{n}{gray}\PYG{p}{)}
    \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish denoise \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{))}


\PYG{k}{def} \PYG{n+nf}{denoise2}\PYG{p}{():}
    \PYG{k}{for} \PYG{n}{input\PYGZus{}name} \PYG{o+ow}{in} \PYG{p}{[}\PYG{l+s+s2}{\PYGZdq{}Q6\PYGZus{}3\PYGZus{}3\PYGZdq{}}\PYG{p}{]:}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{adaptive\PYGZus{}filter}\PYG{p}{(}\PYG{n}{io}\PYG{o}{.}\PYG{n}{imread}\PYG{p}{(}\PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{)}\PYG{o}{+}\PYG{l+s+s2}{\PYGZdq{}.tiff\PYGZdq{}}\PYG{p}{),} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish denoise 1 \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{))}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{adaptive\PYGZus{}filter}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish denoise 2 \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{))}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{adaptive\PYGZus{}filter}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish denoise 3 \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{))}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{adaptive\PYGZus{}filter}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish denoise 4 \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{))}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{adaptive\PYGZus{}filter}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish denoise 5 \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{))}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{ee}\PYG{o}{.}\PYG{n}{adaptive\PYGZus{}filter}\PYG{p}{(}\PYG{n}{output\PYGZus{}image}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{)}
        \PYG{n}{mplimg}\PYG{o}{.}\PYG{n}{imsave}\PYG{p}{(}\PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{)} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}.png\PYGZdq{}}\PYG{p}{,}
                      \PYG{n}{output\PYGZus{}image}\PYG{p}{,}
                      \PYG{n}{cmap}\PYG{o}{=}\PYG{n}{cm}\PYG{o}{.}\PYG{n}{gray}\PYG{p}{)}
    \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish denoise \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}name}\PYG{p}{))}


\PYG{k}{def} \PYG{n+nf}{run}\PYG{p}{():}
    \PYG{k}{for} \PYG{n}{input\PYGZus{}image} \PYG{o+ow}{in} \PYG{p}{[}\PYG{l+s+s2}{\PYGZdq{}Q6\PYGZus{}3\PYGZus{}3\PYGZdq{}}\PYG{p}{]:}
        \PYG{k}{for} \PYG{n}{sigma} \PYG{o+ow}{in} \PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{,} \PYG{l+m+mi}{10}\PYG{p}{,} \PYG{l+m+mi}{50}\PYG{p}{,} \PYG{l+m+mi}{100}\PYG{p}{]:}
            \PYG{n}{output\PYGZus{}name} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}plots/\PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{)} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}\PYGZus{}radially\PYGZus{}limited\PYGZus{}\PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{sigma}\PYG{p}{)} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}.png\PYGZdq{}}
            \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{radially\PYGZus{}limited\PYGZus{}inverse\PYGZus{}filtering\PYGZus{}11810818}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{,} \PYG{n}{sigma}\PYG{p}{)}
            \PYG{n}{mplimg}\PYG{o}{.}\PYG{n}{imsave}\PYG{p}{(}\PYG{n}{output\PYGZus{}name}\PYG{p}{,}
                          \PYG{n}{output\PYGZus{}image}\PYG{p}{,}
                          \PYG{n}{cmap}\PYG{o}{=}\PYG{n}{cm}\PYG{o}{.}\PYG{n}{gray}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish processing radially limited filtering\PYGZdq{}}\PYG{p}{)}

        \PYG{k}{for} \PYG{n}{sigma} \PYG{o+ow}{in} \PYG{p}{[}\PYG{l+m+mi}{1}\PYG{p}{,} \PYG{l+m+mi}{10}\PYG{p}{,} \PYG{l+m+mi}{20}\PYG{p}{,} \PYG{l+m+mi}{30}\PYG{p}{,} \PYG{l+m+mi}{40}\PYG{p}{,} \PYG{l+m+mi}{50}\PYG{p}{]:}
            \PYG{k}{for} \PYG{n}{K} \PYG{o+ow}{in} \PYG{p}{[}\PYG{l+m+mf}{0.25}\PYG{p}{,} \PYG{l+m+mf}{0.0025}\PYG{p}{,} \PYG{l+m+mf}{0.000025}\PYG{p}{]:}
                \PYG{n}{output\PYGZus{}name} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}plots/\PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{)} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}\PYGZus{}wiener\PYGZus{}\PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{sigma}\PYG{p}{)} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}\PYGZus{}\PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{K}\PYG{p}{)} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}.png\PYGZdq{}}
                \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{wiener\PYGZus{}filter\PYGZus{}11810818}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{,} \PYG{n}{sigma}\PYG{p}{,} \PYG{n}{K}\PYG{p}{)}
                \PYG{n}{mplimg}\PYG{o}{.}\PYG{n}{imsave}\PYG{p}{(}\PYG{n}{output\PYGZus{}name}\PYG{p}{,}
                              \PYG{n}{output\PYGZus{}image}\PYG{p}{,}
                              \PYG{n}{cmap}\PYG{o}{=}\PYG{n}{cm}\PYG{o}{.}\PYG{n}{gray}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish processing wiener filtering\PYGZdq{}}\PYG{p}{)}


\PYG{k}{if} \PYG{n+nv+vm}{\PYGZus{}\PYGZus{}name\PYGZus{}\PYGZus{}} \PYG{o}{==} \PYG{l+s+s1}{\PYGZsq{}\PYGZus{}\PYGZus{}main\PYGZus{}\PYGZus{}\PYGZsq{}}\PYG{p}{:}
    \PYG{n}{test\PYGZus{}image}\PYG{p}{()}
    \PYG{c+c1}{\PYGZsh{} run()}
    \PYG{c+c1}{\PYGZsh{} denoise2()}
\end{Verbatim}
+114 −0

File added.

Preview size limit exceeded, changes collapsed.

+73 −0
Original line number Diff line number Diff line
\begin{Verbatim}[commandchars=\\\{\}]
\PYG{k+kn}{import} \PYG{n+nn}{numpy} \PYG{k}{as} \PYG{n+nn}{np}
\PYG{k+kn}{import} \PYG{n+nn}{numpy.fft}
\PYG{k+kn}{from} \PYG{n+nn}{skimage} \PYG{k+kn}{import} \PYG{n}{io}\PYG{p}{,} \PYG{n}{data}
\PYG{k+kn}{import} \PYG{n+nn}{math}
\PYG{k+kn}{from} \PYG{n+nn}{scipy} \PYG{k+kn}{import} \PYG{n}{interpolate}
\PYG{k+kn}{import} \PYG{n+nn}{matplotlib.pyplot} \PYG{k}{as} \PYG{n+nn}{plt}
\PYG{k+kn}{from} \PYG{n+nn}{matplotlib} \PYG{k+kn}{import} \PYG{n}{cm}
\PYG{k+kn}{import} \PYG{n+nn}{matplotlib.image} \PYG{k}{as} \PYG{n+nn}{mplimg}
\PYG{k+kn}{from} \PYG{n+nn}{numba} \PYG{k+kn}{import} \PYG{n}{njit}\PYG{p}{,}\PYG{n}{prange}
\PYG{k+kn}{import} \PYG{n+nn}{EE326\PYGZus{}SUSTech} \PYG{k}{as} \PYG{n+nn}{ee}
\PYG{k+kn}{import} \PYG{n+nn}{time}

\PYG{n+nd}{@njit}\PYG{p}{(}\PYG{n}{parallel}\PYG{o}{=}\PYG{k+kc}{True}\PYG{p}{)}
\PYG{k}{def} \PYG{n+nf}{adaptive\PYGZus{}11810818}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{,} \PYG{n}{n\PYGZus{}size}\PYG{p}{,} \PYG{n}{smax}\PYG{p}{):}
    \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{zeros}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{o}{.}\PYG{n}{shape}\PYG{p}{,} \PYG{n}{dtype}\PYG{o}{=}\PYG{n}{np}\PYG{o}{.}\PYG{n}{uint8}\PYG{p}{)}
    \PYG{n}{m}\PYG{p}{,} \PYG{n}{n} \PYG{o}{=} \PYG{n}{input\PYGZus{}image}\PYG{o}{.}\PYG{n}{shape}

    \PYG{k}{for} \PYG{n}{i} \PYG{o+ow}{in} \PYG{n}{prange}\PYG{p}{(}\PYG{n}{m}\PYG{p}{):}
        \PYG{k}{for} \PYG{n}{j} \PYG{o+ow}{in} \PYG{n}{prange}\PYG{p}{(}\PYG{n}{n}\PYG{p}{):}
            \PYG{n}{n\PYGZus{}size\PYGZus{}2} \PYG{o}{=} \PYG{n}{n\PYGZus{}size}

            \PYG{k}{while} \PYG{k+kc}{True}\PYG{p}{:}
                \PYG{n}{step} \PYG{o}{=} \PYG{p}{(}\PYG{n+nb}{int}\PYG{p}{)((}\PYG{n}{n\PYGZus{}size\PYGZus{}2} \PYG{o}{\PYGZhy{}} \PYG{l+m+mi}{1}\PYG{p}{)} \PYG{o}{/} \PYG{l+m+mi}{2}\PYG{p}{)}
                \PYG{n}{pixels} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{zeros}\PYG{p}{(}\PYG{n}{n\PYGZus{}size\PYGZus{}2} \PYG{o}{*} \PYG{n}{n\PYGZus{}size\PYGZus{}2}\PYG{p}{)}

                \PYG{k}{for} \PYG{n}{i2} \PYG{o+ow}{in} \PYG{n+nb}{range}\PYG{p}{(}\PYG{n}{n\PYGZus{}size\PYGZus{}2}\PYG{p}{):}
                    \PYG{k}{for} \PYG{n}{j2} \PYG{o+ow}{in} \PYG{n+nb}{range}\PYG{p}{(}\PYG{n}{n\PYGZus{}size\PYGZus{}2}\PYG{p}{):}
                        \PYG{k}{if} \PYG{n}{i} \PYG{o}{\PYGZhy{}} \PYG{n}{step} \PYG{o}{+} \PYG{n}{i2} \PYG{o}{\PYGZgt{}=} \PYG{l+m+mi}{0} \PYGZbs{}
                                \PYG{o+ow}{and} \PYG{n}{i} \PYG{o}{\PYGZhy{}} \PYG{n}{step} \PYG{o}{+} \PYG{n}{i2} \PYG{o}{\PYGZlt{}} \PYG{n}{input\PYGZus{}image}\PYG{o}{.}\PYG{n}{shape}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]} \PYGZbs{}
                                \PYG{o+ow}{and} \PYG{n}{j} \PYG{o}{\PYGZhy{}} \PYG{n}{step} \PYG{o}{+} \PYG{n}{j2} \PYG{o}{\PYGZgt{}=} \PYG{l+m+mi}{0} \PYGZbs{}
                                \PYG{o+ow}{and} \PYG{n}{j} \PYG{o}{\PYGZhy{}} \PYG{n}{step} \PYG{o}{+} \PYG{n}{j2} \PYG{o}{\PYGZlt{}} \PYG{n}{input\PYGZus{}image}\PYG{o}{.}\PYG{n}{shape}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]:}
                            \PYG{n}{pixels}\PYG{p}{[}\PYG{n}{j2} \PYG{o}{*} \PYG{n}{n\PYGZus{}size\PYGZus{}2} \PYG{o}{+} \PYG{n}{i2}\PYG{p}{]} \PYG{o}{=} \PYG{n}{input\PYGZus{}image}\PYG{p}{[}\PYG{n}{i} \PYG{o}{\PYGZhy{}} \PYG{n}{step} \PYG{o}{+} \PYG{n}{i2}\PYG{p}{,} \PYG{n}{j} \PYG{o}{\PYGZhy{}} \PYG{n}{step} \PYG{o}{+} \PYG{n}{j2}\PYG{p}{]}

                \PYG{n}{pixels\PYGZus{}sorted} \PYG{o}{=} \PYG{n}{np}\PYG{o}{.}\PYG{n}{sort}\PYG{p}{(}\PYG{n}{pixels}\PYG{p}{)}
                \PYG{n}{med} \PYG{o}{=} \PYG{p}{(}\PYG{n+nb}{int}\PYG{p}{)((}\PYG{n}{n\PYGZus{}size\PYGZus{}2} \PYG{o}{*} \PYG{n}{n\PYGZus{}size\PYGZus{}2}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1}\PYG{p}{)}\PYG{o}{/}\PYG{l+m+mi}{2}\PYG{p}{)}
                \PYG{n}{a1} \PYG{o}{=} \PYG{n}{pixels\PYGZus{}sorted}\PYG{p}{[}\PYG{n}{med}\PYG{p}{]} \PYG{o}{\PYGZhy{}} \PYG{n}{pixels\PYGZus{}sorted}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}
                \PYG{n}{a2} \PYG{o}{=} \PYG{n}{pixels\PYGZus{}sorted}\PYG{p}{[}\PYG{n}{med}\PYG{p}{]} \PYG{o}{\PYGZhy{}} \PYG{n}{pixels\PYGZus{}sorted}\PYG{p}{[}\PYG{n}{n\PYGZus{}size\PYGZus{}2} \PYG{o}{*} \PYG{n}{n\PYGZus{}size\PYGZus{}2}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1}\PYG{p}{]}
                \PYG{k}{if}\PYG{p}{(}\PYG{n}{a1}\PYG{o}{\PYGZgt{}}\PYG{l+m+mi}{0} \PYG{o+ow}{and} \PYG{n}{a2}\PYG{o}{\PYGZlt{}}\PYG{l+m+mi}{0}\PYG{p}{):}
                    \PYG{n}{b1} \PYG{o}{=} \PYG{n}{input\PYGZus{}image}\PYG{p}{[}\PYG{n}{i}\PYG{p}{,} \PYG{n}{j}\PYG{p}{]} \PYG{o}{\PYGZhy{}} \PYG{n}{pixels\PYGZus{}sorted}\PYG{p}{[}\PYG{l+m+mi}{0}\PYG{p}{]}
                    \PYG{n}{b2} \PYG{o}{=} \PYG{n}{input\PYGZus{}image}\PYG{p}{[}\PYG{n}{i}\PYG{p}{,} \PYG{n}{j}\PYG{p}{]} \PYG{o}{\PYGZhy{}} \PYG{n}{pixels\PYGZus{}sorted}\PYG{p}{[}\PYG{n}{n\PYGZus{}size\PYGZus{}2} \PYG{o}{*} \PYG{n}{n\PYGZus{}size\PYGZus{}2}\PYG{o}{\PYGZhy{}}\PYG{l+m+mi}{1}\PYG{p}{]}
                    \PYG{k}{if}\PYG{p}{(}\PYG{n}{b1}\PYG{o}{\PYGZgt{}}\PYG{l+m+mi}{0} \PYG{o+ow}{and} \PYG{n}{b2}\PYG{o}{\PYGZlt{}}\PYG{l+m+mi}{0}\PYG{p}{):}
                        \PYG{n}{output\PYGZus{}image}\PYG{p}{[}\PYG{n}{i}\PYG{p}{,} \PYG{n}{j}\PYG{p}{]} \PYG{o}{=} \PYG{n}{pixels}\PYG{p}{[}\PYG{n}{med}\PYG{p}{]}
                    \PYG{k}{else}\PYG{p}{:}
                        \PYG{n}{output\PYGZus{}image}\PYG{p}{[}\PYG{n}{i}\PYG{p}{,} \PYG{n}{j}\PYG{p}{]} \PYG{o}{=} \PYG{n}{pixels\PYGZus{}sorted}\PYG{p}{[}\PYG{n}{med}\PYG{p}{]}
                    \PYG{k}{break}
                \PYG{k}{else}\PYG{p}{:}
                    \PYG{k}{if}\PYG{p}{(}\PYG{n}{n\PYGZus{}size\PYGZus{}2} \PYG{o}{\PYGZlt{}} \PYG{n}{smax}\PYG{p}{):}
                        \PYG{n}{n\PYGZus{}size\PYGZus{}2} \PYG{o}{+=} \PYG{l+m+mi}{2}
                    \PYG{k}{else}\PYG{p}{:}
                        \PYG{n}{output\PYGZus{}image}\PYG{p}{[}\PYG{n}{i}\PYG{p}{,} \PYG{n}{j}\PYG{p}{]} \PYG{o}{=} \PYG{n}{pixels\PYGZus{}sorted}\PYG{p}{[}\PYG{n}{med}\PYG{p}{]}
                        \PYG{k}{break}

    \PYG{k}{return} \PYG{n}{output\PYGZus{}image}

\PYG{k}{if} \PYG{n+nv+vm}{\PYGZus{}\PYGZus{}name\PYGZus{}\PYGZus{}} \PYG{o}{==} \PYG{l+s+s1}{\PYGZsq{}\PYGZus{}\PYGZus{}main\PYGZus{}\PYGZus{}\PYGZsq{}}\PYG{p}{:}
    \PYG{k}{for} \PYG{n}{i} \PYG{o+ow}{in} \PYG{p}{[}\PYG{l+m+mi}{1}
        \PYG{p}{,} \PYG{l+m+mi}{2}
        \PYG{p}{,} \PYG{l+m+mi}{3}
        \PYG{p}{,} \PYG{l+m+mi}{4}
              \PYG{p}{]:}
        \PYG{n}{start\PYGZus{}time} \PYG{o}{=} \PYG{n}{time}\PYG{o}{.}\PYG{n}{time}\PYG{p}{()}
        \PYG{n}{input\PYGZus{}image} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}Q6\PYGZus{}1\PYGZus{}\PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{i}\PYG{p}{)}
        \PYG{n}{output\PYGZus{}name} \PYG{o}{=} \PYG{l+s+s2}{\PYGZdq{}plots/\PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{)} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}\PYGZus{}adaptive.png\PYGZdq{}}
        \PYG{n}{input\PYGZus{}image} \PYG{o}{=} \PYG{n}{io}\PYG{o}{.}\PYG{n}{imread}\PYG{p}{(}\PYG{n}{input\PYGZus{}image} \PYG{o}{+} \PYG{l+s+s2}{\PYGZdq{}.tiff\PYGZdq{}}\PYG{p}{)}
        \PYG{n}{output\PYGZus{}image} \PYG{o}{=} \PYG{n}{adaptive\PYGZus{}11810818}\PYG{p}{(}\PYG{n}{input\PYGZus{}image}\PYG{p}{,} \PYG{l+m+mi}{3}\PYG{p}{,} \PYG{l+m+mi}{20}\PYG{p}{)}
        \PYG{n+nb}{print}\PYG{p}{(}\PYG{n}{time}\PYG{o}{.}\PYG{n}{time}\PYG{p}{()} \PYG{o}{\PYGZhy{}} \PYG{n}{start\PYGZus{}time}\PYG{p}{)}
        \PYG{n}{mplimg}\PYG{o}{.}\PYG{n}{imsave}\PYG{p}{(}\PYG{n}{output\PYGZus{}name}\PYG{p}{,}
                      \PYG{n}{output\PYGZus{}image}\PYG{p}{,}
                      \PYG{n}{cmap}\PYG{o}{=}\PYG{n}{cm}\PYG{o}{.}\PYG{n}{gray}\PYG{p}{)}

        \PYG{n+nb}{print}\PYG{p}{(}\PYG{l+s+s2}{\PYGZdq{}Finish processing \PYGZdq{}} \PYG{o}{+} \PYG{n+nb}{str}\PYG{p}{(}\PYG{n}{i}\PYG{p}{))}
\end{Verbatim}
Loading