o
    h+                     @   s   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d Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! ZdS )"    )testing)assert_array_equalassert_allcloseN)camera)random_noiseimg_as_floatc                  C   s(   t  } t| dd}t|t| dd d S )N*   )rng)r   r   r   )camtest r   _/var/www/html/scripts/venv/lib/python3.10/site-packages/skimage/util/tests/test_random_noise.pytest_set_seed	   s   r   c                  C   sz   t t } d}t| dd|d}| |k}t|| t|  t| | jd | jd   }d}t	|| |ks;J d S )N333333?r   saltr	   modeamountr      {Gz?)
r   r   r   r   nponessumfloatshapeabs)r
   r   	cam_noisysaltmask
proportion	tolerancer   r   r   	test_salt   s   
 r    c                  C   s6   t jdd} t| ddd}t|g dg dg d S )N      r   r   )r   r   )r   r   r   )r   randomrandr   r   )imagenoisyr   r   r   test_salt_p1   s   r'   c                  C   sD   t jdd} t| dddd}d}tt |dkd |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   r   r   r   test_singleton_dim$   s   "r*   c            	      C   s   t t } | d d }d}t| dd|d}| |k}t|| t|  t| | jd | jd   }d	}t	|| |ksAJ |d
k }t|dddd}t|d
k | | jd | jd   }t	|| |ksmJ d S )N       @      ?r   r   pepperr   r   r   r   )
r   r   r   r   r   zerosr   r   r   r   )	r
   data_signedr   r   
peppermaskr   r   
orig_zeroscam_noisy_signedr   r   r   test_pepper,   s"   
 r4   c                  C   s   t t } d}t| dd|dd}t| |k|dk}t| |k|dk}t|| t|  t|| t|  t	| |  | j
d | j
d	   }d
}t|| |ks\J d| |    k rmdk spJ  J d S )Nr   r   zs&p      ?)r	   r   r   salt_vs_pepperr,           r   r   r   g
ףp=
?gffffff?)r   r   r   r   logical_andr   r   r   r/   r   r   r   )r
   r   r   r   r1   r   r   r   r   r   test_salt_and_pepperF   s"   

,r9   c                  C   s   t dd } t| ddd}d|   k rdk sJ  J t| ddd	d
}d| d   k r5dk s8J  J d|   k rEdk sHJ  J d S )N   r;         ?r   r   )r	   vargMb?g~jt?g333333?gQ?)r	   meanr=   gQ?g{Gz?g;On?)r   r/   r   r=   r>   )datadata_gaussianr   r   r   test_gaussian\   s    $$rA   c                  C   s  d} t dd }t dd }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 df    k rLdk sOJ  J d|d ddd f    k rddk sgJ  J d|dd d df    k r|dk sJ  J d|dd dd f    k rdk sJ  J t |}tt t|d	| |d W d    n1 sw   Y  |d7 }d|d< tt t|d	| |d W d    d S 1 sw   Y  d S )Ni\  r:   r<   gMbP?r(   @   r5   g?localvarF)r   r	   
local_varsclipr7   gMb`?gRQ?gzG?g\(\?gRQ?g{Gz?gQ?)r   r	   rD   r.   )r   r   )r   r/   r   r=   
zeros_liker   raises
ValueError)seedr?   rD   r@   bad_local_varsr   r   r   test_localvarf   s4   0000
"rK   c                  C   sb   d} t dd }t j| }|ddd}t |||  dd}t|ddddd	}t|| d S )
Nr   r:   r(   g
cQ?r   r   speckleg{Gz?)r   r	   r>   r=   )r   r/   r#   default_rngnormalrE   r   r   )rI   r?   r	   noiseexpecteddata_speckler   r   r   test_speckle   s   
rR   c                  C   sh   t  } tjd}t| ddd}t| dddd}|t| d d }t|t|dd	 t|| d S )
Nr   poisson)r   r	   Fr   r	   rE      g      p@r7   r,   )	r   r   r#   rM   r   rS   r   r   rE   )r?   r	   r   
cam_noisy2rP   r   r   r   test_poisson   s   rW   c                  C   s   t  } t| d d }t| dddd}t|dddd}| dkr'| dks)J | dkr5| dks7J t| ddd	d}t|ddd	d}| d
krS| dksUJ | dkra| dkscJ d S )Nr+   r,   rS   r   TrT   r7         Fgffffff?g?r   r   r   maxmin)r?   r0   cam_poissoncam_poisson2r   r   r   test_clip_poisson       r^   c                  C   s   t  } t| d d }t| dddd}t|dddd}| dkr'| dks)J | dkr5| dks7J t| ddd	d}t|ddd	d}| d
krS| dk sUJ | dkra| dk scJ d S )Nr+   r,   gaussianr   TrT   r7   rX   FgQ?gffffffֿ/$?/$rY   )r?   r0   	cam_gauss
cam_gauss2r   r   r   test_clip_gaussian   r_   re   c                  C   s   t  } t| d d }t| dddd}t|dddd}| dkr'| dks)J | dkr5| dks7J t| ddd	d}t|ddd	d}| d
krS| dksUJ | d
kra| dk scJ d S )Nr+   r,   rL   r   TrT   r7   rX   Fra   rb   rY   )r?   r0   cam_specklecam_speckle_sigr   r   r   test_clip_speckle   r_   rh   c                  C   sD   t d} tt t| d W d    d S 1 sw   Y  d S )N)rB   rB   perlin)r   r/   r   rG   KeyErrorr   )r?   r   r   r   test_bad_mode   s   
"rk   )skimage._sharedr   skimage._shared.testingr   r   numpyr   skimage.datar   skimage.utilr   r   r   r    r'   r*   r4   r9   rA   rK   rR   rW   r^   re   rh   rk   r   r   r   r   <module>   s&    
