├── README.md ├── images ├── example1.png ├── example1 │ ├── J_corrected.png │ ├── J_dark.png │ ├── J_init.png │ ├── J_original.png │ ├── J_refined.png │ ├── J_refined_dark.png │ ├── info.txt │ ├── init_bright_channel_prior.png │ ├── init_dark_channel_prior.png │ ├── refined.png │ ├── transmission_a_dark.png │ ├── transmission_a_refined_dark.png │ ├── transmission_corrected.png │ └── transmission_init.png ├── example2.png ├── example2 │ ├── J_corrected.png │ ├── J_dark.png │ ├── J_init.png │ ├── J_original.png │ ├── J_refined.png │ ├── J_refined_dark.png │ ├── info.txt │ ├── init_bright_channel_prior.png │ ├── init_dark_channel_prior.png │ ├── refined.png │ ├── transmission_a_dark.png │ ├── transmission_a_refined_dark.png │ ├── transmission_corrected.png │ └── transmission_init.png ├── limitation1. │ ├── J_corrected.png │ ├── J_dark.png │ ├── J_init.png │ ├── J_original.png │ ├── J_refined.png │ ├── J_refined_dark.png │ ├── info.txt │ ├── init_bright_channel_prior.png │ ├── init_dark_channel_prior.png │ ├── refined.png │ ├── transmission_a_dark.png │ ├── transmission_a_refined_dark.png │ ├── transmission_corrected.png │ └── transmission_init.png ├── limitation1.jpeg ├── limitation2. │ ├── J_corrected.png │ ├── J_dark.png │ ├── J_init.png │ ├── J_original.png │ ├── J_refined.png │ ├── J_refined_dark.png │ ├── info.txt │ ├── init_bright_channel_prior.png │ ├── init_dark_channel_prior.png │ ├── refined.png │ ├── transmission_a_dark.png │ ├── transmission_a_refined_dark.png │ ├── transmission_corrected.png │ └── transmission_init.png └── limitation2.jpeg └── src ├── dehaze.py ├── guidedfilter.py └── multi-dehaze.sh /README.md: -------------------------------------------------------------------------------- 1 | # Python-image-enhancement-with-bright-dark-prior 2 | 3 | This repository is a python implementation of [Nighttime low illumination image enhancement with single image using bright/dark channel prior](https://jivp-eurasipjournals.springeropen.com/articles/10.1186/s13640-018-0251-4). 4 | Some of the codes are different from the original paper because some descriptions there are missing & wrong. 5 | 6 | ## How to Run 7 | You need to modify inside `if __name__ == '__main__':` in _dehaze.py_ for image, directory and parameters setting. 8 | You can use _multi-dehaze.sh_ for multi-image processing. 9 | 10 | ## Examples 11 | |Input|Output| 12 | |---|---| 13 | ||| 14 | ||| 15 | 16 | ## Limitation 17 | I noticed the result is quite bad if spotlights in image. 18 | |Input|Output| 19 | |---|---| 20 | ||| 21 | ||| 22 | 23 | ## Acknowledge 24 | The codes are based on the following repository. 25 | https://github.com/joyeecheung/dark-channel-prior-dehazing 26 | -------------------------------------------------------------------------------- /images/example1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1.png -------------------------------------------------------------------------------- /images/example1/J_corrected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/J_corrected.png -------------------------------------------------------------------------------- /images/example1/J_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/J_dark.png -------------------------------------------------------------------------------- /images/example1/J_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/J_init.png -------------------------------------------------------------------------------- /images/example1/J_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/J_original.png -------------------------------------------------------------------------------- /images/example1/J_refined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/J_refined.png -------------------------------------------------------------------------------- /images/example1/J_refined_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/J_refined_dark.png -------------------------------------------------------------------------------- /images/example1/info.txt: -------------------------------------------------------------------------------- 1 | tmin=0.1 2 | w=15 3 | alpha=0.4 4 | omega=0.75 5 | p=0.1 6 | eps=0.001 -------------------------------------------------------------------------------- /images/example1/init_bright_channel_prior.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/init_bright_channel_prior.png -------------------------------------------------------------------------------- /images/example1/init_dark_channel_prior.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/init_dark_channel_prior.png -------------------------------------------------------------------------------- /images/example1/refined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/refined.png -------------------------------------------------------------------------------- /images/example1/transmission_a_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/transmission_a_dark.png -------------------------------------------------------------------------------- /images/example1/transmission_a_refined_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/transmission_a_refined_dark.png -------------------------------------------------------------------------------- /images/example1/transmission_corrected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/transmission_corrected.png -------------------------------------------------------------------------------- /images/example1/transmission_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example1/transmission_init.png -------------------------------------------------------------------------------- /images/example2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2.png -------------------------------------------------------------------------------- /images/example2/J_corrected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/J_corrected.png -------------------------------------------------------------------------------- /images/example2/J_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/J_dark.png -------------------------------------------------------------------------------- /images/example2/J_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/J_init.png -------------------------------------------------------------------------------- /images/example2/J_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/J_original.png -------------------------------------------------------------------------------- /images/example2/J_refined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/J_refined.png -------------------------------------------------------------------------------- /images/example2/J_refined_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/J_refined_dark.png -------------------------------------------------------------------------------- /images/example2/info.txt: -------------------------------------------------------------------------------- 1 | tmin=0.1 2 | w=15 3 | alpha=0.4 4 | omega=0.75 5 | p=0.1 6 | eps=0.001 -------------------------------------------------------------------------------- /images/example2/init_bright_channel_prior.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/init_bright_channel_prior.png -------------------------------------------------------------------------------- /images/example2/init_dark_channel_prior.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/init_dark_channel_prior.png -------------------------------------------------------------------------------- /images/example2/refined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/refined.png -------------------------------------------------------------------------------- /images/example2/transmission_a_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/transmission_a_dark.png -------------------------------------------------------------------------------- /images/example2/transmission_a_refined_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/transmission_a_refined_dark.png -------------------------------------------------------------------------------- /images/example2/transmission_corrected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/transmission_corrected.png -------------------------------------------------------------------------------- /images/example2/transmission_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/example2/transmission_init.png -------------------------------------------------------------------------------- /images/limitation1./J_corrected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./J_corrected.png -------------------------------------------------------------------------------- /images/limitation1./J_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./J_dark.png -------------------------------------------------------------------------------- /images/limitation1./J_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./J_init.png -------------------------------------------------------------------------------- /images/limitation1./J_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./J_original.png -------------------------------------------------------------------------------- /images/limitation1./J_refined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./J_refined.png -------------------------------------------------------------------------------- /images/limitation1./J_refined_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./J_refined_dark.png -------------------------------------------------------------------------------- /images/limitation1./info.txt: -------------------------------------------------------------------------------- 1 | tmin=0.1 2 | w=15 3 | alpha=0.4 4 | omega=0.75 5 | p=0.1 6 | eps=0.001 -------------------------------------------------------------------------------- /images/limitation1./init_bright_channel_prior.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./init_bright_channel_prior.png -------------------------------------------------------------------------------- /images/limitation1./init_dark_channel_prior.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./init_dark_channel_prior.png -------------------------------------------------------------------------------- /images/limitation1./refined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./refined.png -------------------------------------------------------------------------------- /images/limitation1./transmission_a_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./transmission_a_dark.png -------------------------------------------------------------------------------- /images/limitation1./transmission_a_refined_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./transmission_a_refined_dark.png -------------------------------------------------------------------------------- /images/limitation1./transmission_corrected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./transmission_corrected.png -------------------------------------------------------------------------------- /images/limitation1./transmission_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1./transmission_init.png -------------------------------------------------------------------------------- /images/limitation1.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation1.jpeg -------------------------------------------------------------------------------- /images/limitation2./J_corrected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./J_corrected.png -------------------------------------------------------------------------------- /images/limitation2./J_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./J_dark.png -------------------------------------------------------------------------------- /images/limitation2./J_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./J_init.png -------------------------------------------------------------------------------- /images/limitation2./J_original.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./J_original.png -------------------------------------------------------------------------------- /images/limitation2./J_refined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./J_refined.png -------------------------------------------------------------------------------- /images/limitation2./J_refined_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./J_refined_dark.png -------------------------------------------------------------------------------- /images/limitation2./info.txt: -------------------------------------------------------------------------------- 1 | tmin=0.1 2 | w=15 3 | alpha=0.4 4 | omega=0.75 5 | p=0.1 6 | eps=0.001 -------------------------------------------------------------------------------- /images/limitation2./init_bright_channel_prior.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./init_bright_channel_prior.png -------------------------------------------------------------------------------- /images/limitation2./init_dark_channel_prior.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./init_dark_channel_prior.png -------------------------------------------------------------------------------- /images/limitation2./refined.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./refined.png -------------------------------------------------------------------------------- /images/limitation2./transmission_a_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./transmission_a_dark.png -------------------------------------------------------------------------------- /images/limitation2./transmission_a_refined_dark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./transmission_a_refined_dark.png -------------------------------------------------------------------------------- /images/limitation2./transmission_corrected.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./transmission_corrected.png -------------------------------------------------------------------------------- /images/limitation2./transmission_init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2./transmission_init.png -------------------------------------------------------------------------------- /images/limitation2.jpeg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ba-san/Python-image-enhancement-with-bright-dark-prior/66cbc5b2731073c9d401cf1b6578d13278aea240/images/limitation2.jpeg -------------------------------------------------------------------------------- /src/dehaze.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env python 2 | # -*- coding: utf-8 -*- 3 | 4 | import os, cv2 5 | import numpy as np 6 | np.set_printoptions(threshold=np.inf) 7 | from guidedfilter import guided_filter 8 | from PIL import Image 9 | 10 | L = 256 # color depth 11 | 12 | 13 | def get_illumination_channel(I, w): 14 | M, N, _ = I.shape 15 | padded = np.pad(I, ((int(w/2), int(w/2)), (int(w/2), int(w/2)), (0, 0)), 'edge') 16 | 17 | darkch = np.zeros((M, N)) 18 | brightch = np.zeros((M, N)) 19 | 20 | for i, j in np.ndindex(darkch.shape): 21 | #darkch[i, j] = np.min(padded[i:i + w, j:j + w, :]) # patch level 22 | darkch[i, j] = np.min(padded[i, j, :]) # pixel level 23 | brightch[i, j] = np.max(padded[i:i + w, j:j + w, :]) 24 | 25 | return darkch, brightch 26 | 27 | 28 | def get_atmosphere(I, brightch, p): 29 | M, N = brightch.shape 30 | flatI = I.reshape(M*N, 3) 31 | flatbright = brightch.ravel() # make array flatten 32 | 33 | searchidx = (-flatbright).argsort()[:int(M*N*p)] # find top M * N * p indexes. argsort() returns sorted (ascending) index. 34 | 35 | # return the mean intensity for each channel 36 | A = np.mean(flatI.take(searchidx, axis=0),dtype=np.float64, axis=0) # 'take' get value from index. 37 | 38 | return A 39 | 40 | 41 | def get_initial_transmission(A, brightch): 42 | A_c = np.max(A) 43 | 44 | init_t = (brightch-A_c)/(1.-A_c) # original 45 | 46 | ### maybe this make image too bright (almost hazy) 47 | #bright_norm = (brightch - np.min(brightch))/(np.max(brightch) - np.min(brightch)) 48 | #J_bright = (bright_norm**0.3)*(55./255.) + (200./255.) # referred to "Automatic local exposure correction using bright channel prior for under-exposed images" 49 | #init_t = (brightch-A_c)/(J_bright-A_c) 50 | 51 | ### 3 channels version ### 52 | 53 | #init_t = np.zeros((brightch.shape[0], brightch.shape[1], 3)) 54 | 55 | #for i in range(3): 56 | #init_t[:,:,i] = (brightch-A[i])/(1.-A[i]) 57 | #init_t[:,:,i] = (init_t[:,:,i] - np.min(init_t[:,:,i]))/(np.max(init_t[:,:,i]) - np.min(init_t[:,:,i])) 58 | 59 | 60 | return (init_t - np.min(init_t))/(np.max(init_t) - np.min(init_t)) # min-max normalization. 61 | 62 | 63 | def get_corrected_transmission(I, A, darkch, brightch, init_t, alpha, omega, w): 64 | im3 = np.empty(I.shape, I.dtype); 65 | 66 | for ind in range(0,3): 67 | im3[:,:,ind] = I[:,:,ind]/A[ind] 68 | 69 | dark_c, _ = get_illumination_channel(im3, w) 70 | dark_t = 1 - omega*dark_c 71 | #dark_t = (dark_t - np.min(dark_t))/(np.max(dark_t) - np.min(dark_t)) # min-max normalization. But, it's no need by the above equation. 72 | 73 | #print('dark channel prior between [%.4f, %.4f]' % (dark_c.min(), dark_c.max())) #dark channel prior between [0.0000, 1.5222] 74 | #print('initial dark transmission rate between [%.4f, %.4f]' % (dark_t.min(), dark_t.max())) 75 | 76 | corrected_t = init_t 77 | diffch = brightch - darkch 78 | 79 | for i in range(diffch.shape[0]): 80 | for j in range(diffch.shape[1]): 81 | if(diffch[i,j]