
    a6d                         d dl mZ d dlmZmZ d dlZd dlmZ d dl	m
Z
mZ d Zd Zd Zd	 Zd
 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )    )testing)assert_array_equalassert_allcloseN)camera)random_noiseimg_as_floatc                      d} t                      }t          ||           }t          |t          ||                      d S )N*   )seed)r   r   r   )r   camtests      Dlib/python3.11/site-packages/skimage/util/tests/test_random_noise.pytest_set_seedr   	   sE    D
((C$'''Dt\#D999:::::    c                     d} t          t                                }d}t          || d|          }||k    }t          ||         t	          j        |                                                     t          |                                          |j        d         |j        d         z  z  }d}t          ||z
            |k    sJ d S )Nr
   333333?saltr   modeamountr      {Gz?)
r   r   r   r   nponessumfloatshapeabs)r   r   r   	cam_noisysaltmask
proportion	tolerances          r   	test_saltr#      s    D
vxx
 
 CFSt&HHHIiH Ih')@)@AAA x||~~&&#)A,1*EFJIv
"##y000000r   c                      t           j                            dd          } t          | dd          }t	          |g dg dg           d S )N      r   r   )r   r   )r   r   r   )r   randomrandr   r   )imagenoisys     r   test_salt_p1r+       sN    INN1a  EVA666Euyyy)))455555r   c                      t           j                            dd          } t          | ddd          }d}t	          t          j        |dk              dz
            |k    sJ dS )	zBEnsure images where size of a given dimension is 1 work correctly.r   i  r   皙?r
   )r   r   r   g?N)r   r'   r(   r   r   average)r)   r*   r"   s      r   test_singleton_dimr/   &   sd    INN1d##EVCbAAAEIrz%1*%%+,,	999999r   c                     d} t          t                                }|dz  dz
  }d}t          || d|          }||k    }t          ||         t	          j        |                                                     t          |                                          |j        d         |j        d         z  z  }d	}t          ||z
            |k    sJ |d
k                                    }t          || dd          }	t          |	d
k                                    |z
            |j        d         |j        d         z  z  }t          ||z
            |k    sJ d S )Nr
          @      ?r   pepperr   r   r   r   )
r   r   r   r   r   zerosr   r   r   r   )
r   r   data_signedr   r   
peppermaskr!   r"   
orig_zeroscam_noisy_signeds
             r   test_pepperr:   .   s`   D
vxx
 
 C(R-KFSt(6JJJI	!J Ij)28JNN4D4D+E+EFFF z~~''((CIaL39Q<,GHJIv
"##y0000 #((**J#Kd+.0 0 0 )R/4466CDD9Q<#)A,.0Jv
"##y000000r   c                     d} t          t                                }d}t          || d|d          }t          j        ||k    |dk              }t          j        ||k    |dk              }t          ||         t          j        |                                                     t          ||         t          j        |                                                     t          |                                |                                z             |j
        d         |j
        d	         z  z  }d
}t          ||z
            |k    sJ d|                                |                                z  cxk     rdk     sn J d S )Nr
   r   zs&p      ?)r   r   r   salt_vs_pepperr2           r   r   r   g
ףp=
?gffffff?)r   r   r   r   logical_andr   r   r   r5   r   r   r   )r   r   r   r   r    r7   r!   r"   s           r   test_salt_and_pepperr@   I   sn   D
vxx
 
 CFSt%,02 2 2I~cY.	R@@Hy 0)r/BBJ Ih')@)@AAAIj)28JNN4D4D+E+EFFF )))+ +.1ilSYq\.IKJIv
"##y0000 (,,..:>>#3#33::::d::::::::r   c                  Z   d} t          j        d          dz   }t          || d          }d|                                cxk     rdk     sn J t          || dd	
          }d|                                dz
  cxk     rdk     sn J d|                                cxk     rdk     sn J d S )Nr
      rC         ?r   )r   vargMb?g~jt?g333333?gQ?)r   meanrE   gQ?g{Gz?g;On?)r   r5   r   rE   rF   )r   datadata_gaussians      r   test_gaussianrI   `   s    D8J#%D Dd;;;M=$$&&.......... DsFFFM-$$&&,3333t333333=$$&&............r   c                     d} t          j        d          dz   }t          j        d          dz   }d|d ddd f<   d|dd d df<   d|dd dd f<   t          |d	| |d
          }d|d dd df                                         cxk     rdk     sn J d|d ddd f                                         cxk     rdk     sn J d|dd d df                                         cxk     rdk     sn J d|dd dd f                                         cxk     rdk     sn J t          j        |          }t          j        t                    5  t          |d	| |           d d d            n# 1 swxY w Y   |dz  }d|d<   t          j        t                    5  t          |d	| |           d d d            d S # 1 swxY w Y   d S )Ni\  rB   rD   gMbP?r-   @   r<   g?localvarF)r   r   
local_varsclipr>   gMb`?gRQ?gzG?g\(\?gRQ?g{Gz?gQ?)r   r   rM   r4   )r   r   )r   r5   r   rE   
zeros_liker   raises
ValueError)r   rG   rM   rH   bad_local_varss        r   test_localvarrS   k   s   D8J#%D*%%-JJssBCCxJrssCRCxJrssBCCx JT,6UD D DMcrc3B3h'++--5555555555="bcc*..0088885888888=crc*..0088885888888=bcc*..0088885888888 ]4((N	
	#	# 0 0T
 .	0 	0 	0 	00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 cNN4	
	#	# 0 0T
 .	0 	0 	0 	00 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0s$   E//E36E3F>>GGc                  $   d} t          j        d          dz   }t           j                            |           }|                    ddd          }t          j        |||z  z   dd          }t          |d| dd	          }t          ||           d S )
Nr
   rB   r-   g
cQ?r   r   speckleg{Gz?)r   r   rF   rE   )r   r5   r'   default_rngnormalrN   r   r   )r   rG   rngnoiseexpecteddata_speckles         r   test_speckler\      s    D8J#%D
)


%
%CJJsK44EwtdUl*Aq11H94c$(* * *LHl+++++r   c                  f   d} t                      }t          |d|           }t          |d| d          }t          j                            |           }|                    t          |          dz            dz  }t          |t          j        |dd	                     t          ||           d S )
Nr
   poisson)r   r   Fr   r   rN      g      p@r>   r2   )	r   r   r   r'   rV   r^   r   r   rN   )r   rG   r   
cam_noisy2rX   rZ   s         r   test_poissonrb      s    D88DT	===IdEJJJJ
)


%
%C{{<--344t;HIrwxR88999J)))))r   c                  x   d} t                      }t          |          dz  dz
  }t          |d| d          }t          |d| d          }|                                dk    r|                                dk    sJ |                                dk    r|                                dk    sJ t          |d| d	          }t          |d| d	          }|                                d
k    r|                                dk    sJ |                                dk    r|                                dk    sJ d S )Nr
   r1   r2   r^   Tr_   r>         Fgffffff?g?r   r   r   maxmin)r   rG   r6   cam_poissoncam_poisson2s        r   test_clip_poissonrj      s[   D88Dt$$r)B.K t)$TJJJK)$%)+ + +LOO##+//*;*;r*A*A*A*A"$$<+;+;+=+=+D+D+D+D t)$UKKKK)$%*, , ,LOO$$;??+<+<+B+B+B+B$$<+;+;+=+=+D+D+D+D+D+Dr   c                  x   d} t                      }t          |          dz  dz
  }t          |d| d          }t          |d| d          }|                                dk    r|                                dk    sJ |                                dk    r|                                dk    sJ t          |d| d	          }t          |d| d	          }|                                d
k    r|                                dk     sJ |                                dk    r|                                dk     sJ d S )Nr
   r1   r2   gaussianTr_   r>   rd   FgQ?gffffffֿ/$?/$re   )r   rG   r6   	cam_gauss
cam_gauss2s        r   test_clip_gaussianrq      sK   D88Dt$$r)B.K T
DIIIIk
#') ) )JMMOOr!!	2(=(=(=(=NN"")9)9S)@)@)@)@ T
EJJJIk
#(* * *JMMOOd""5)@)@)@)@NNu$$:>>+;+;f+D+D+D+D+D+Dr   c                  x   d} t                      }t          |          dz  dz
  }t          |d| d          }t          |d| d          }|                                dk    r|                                dk    sJ |                                dk    r|                                dk    sJ t          |d| d	          }t          |d| d	          }|                                d
k    r|                                dk    sJ |                                d
k    r|                                dk     sJ d S )Nr
   r1   r2   rU   Tr_   r>   rd   Frm   rn   re   )r   rG   r6   cam_specklecam_speckle_sigs        r   test_clip_speckleru      s[   D88Dt$$r)B.K t)$TJJJK";YT(,. . .OOO##+//*;*;r*A*A*A*A!!R''o.A.A.C.Cs.J.J.J.J t)$UKKKK";YT%*, , ,OOO%%KOO,=,=,C,C,C,C!!E))0C0C0E0E0N0N0N0N0N0Nr   c                      t          j        d          } t          j        t                    5  t          | d           d d d            d S # 1 swxY w Y   d S )N)rK   rK   perlin)r   r5   r   rP   KeyErrorr   )rG   s    r   test_bad_modery      s    8HD		!	! % %T8$$$% % % % % % % % % % % % % % % % % %s   AAA)skimage._sharedr   skimage._shared.testingr   r   numpyr   skimage.datar   skimage.utilr   r   r   r#   r+   r/   r:   r@   rI   rS   r\   rb   rj   rq   ru   ry    r   r   <module>r      sJ   # # # # # # G G G G G G G G           3 3 3 3 3 3 3 3; ; ;1 1 1 6 6 6: : :1 1 16; ; ;./ / /0 0 06	, 	, 	,	* 	* 	*F F F(F F F(P P P(% % % % %r   