U
    ?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   V/var/www/html/venv/lib/python3.8/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svt
d S )N333333?r   saltr	   modeamountr      {Gz?)r   r   r   r   nponessumfloatshapeabsAssertionError)r
   r   	cam_noisysaltmask
proportion	tolerancer   r   r   	test_salt   s    
 r!   c                  C   s:   t jdd} t| ddd}t|dddgdddgg d S )N      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@t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   Zaverager   )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st
|d
k }t|dddd}t|d
k | | jd | jd   }t	|| |kst
d S )N       @      ?r   r   Zpepperr   r   r   r   )r   r   r   r   r   zerosr   r   r   r   r   )	r
   data_signedr   r   
peppermaskr   r    Z
orig_zerosZcam_noisy_signedr   r   r   test_pepper,   s"    
 r1   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std| |    k rdk sn td S )Nr   r   zs&p      ?)r	   r   r   Z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   r   r0   r   r    r   r   r   test_salt_and_pepperF   s"    

r5   c                  C   s   t dd } t| ddd}d|   k r4dk s:n tt| ddd	d
}d| d   k rfdk sln td|   k rdk sn td S )N   r7         ?r   r   )r	   vargMb?g~jt?g333333?gQ?)r	   meanr9   gQ?g{Gz?g;On?)r   r.   r   r9   r   r:   )datadata_gaussianr   r   r   test_gaussian\   s    "r=   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 rdk sn td|d ddd f    k rdk sn td|dd d df    k rdk sn td|dd dd f    k r$dk s*n tt |}tt t|d	| |d W 5 Q R X |d7 }d|d< tt t|d	| |d W 5 Q R X d S )Ni\  r6   r8   gMbP?r)   @   r2   g?ZlocalvarF)r   r	   
local_varsclipr3   gMb`?gRQ?gzG?g\(\?gRQ?g{Gz?gQ?)r   r	   r?   r-   )r   r   )	r   r.   r   r9   r   Z
zeros_liker   raises
ValueError)seedr;   r?   r<   Zbad_local_varsr   r   r   test_localvarf   s2     ...2
rD   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   r6   r)   g
cQ?r   r   speckleg{Gz?)r   r	   r:   r9   )r   r.   r$   default_rngnormalr@   r   r   )rC   r;   r	   noiseexpectedZdata_speckler   r   r   test_speckle   s    
rJ   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	   r@      g      p@r3   r,   )	r   r   r$   rF   r   rK   r   r   r@   )r;   r	   r   Z
cam_noisy2rI   r   r   r   test_poisson   s    rN   c                  C   s   t  } t| d d }t| dddd}t|dddd}| dkrN| dksRt| dkrj| dksntt| ddd	d}t|ddd	d}| d
kr| dkst| dkr| dkstd S )Nr+   r,   rK   r   TrL   r3         Fgffffff?g?r   r   r   maxminr   )r;   r/   Zcam_poissonZcam_poisson2r   r   r   test_clip_poisson   s    rS   c                  C   s   t  } t| d d }t| dddd}t|dddd}| dkrN| dksRt| dkrj| dksntt| ddd	d}t|ddd	d}| d
kr| dk st| dkr| dk std S )Nr+   r,   Zgaussianr   TrL   r3   rO   FgQ?gffffffֿ/$?/$rP   )r;   r/   Z	cam_gaussZ
cam_gauss2r   r   r   test_clip_gaussian   s    rV   c                  C   s   t  } t| d d }t| dddd}t|dddd}| dkrN| dksRt| dkrj| dksntt| ddd	d}t|ddd	d}| d
kr| dkst| d
kr| dk std S )Nr+   r,   rE   r   TrL   r3   rO   FrT   rU   rP   )r;   r/   Zcam_speckleZcam_speckle_sigr   r   r   test_clip_speckle   s    rW   c               	   C   s.   t d} tt t| d W 5 Q R X d S )N)r>   r>   Zperlin)r   r.   r   rA   KeyErrorr   )r;   r   r   r   test_bad_mode   s    
rY   )Zskimage._sharedr   Zskimage._shared.testingr   r   numpyr   Zskimage.datar   Zskimage.utilr   r   r   r!   r(   r*   r1   r5   r=   rD   rJ   rN   rS   rV   rW   rY   r   r   r   r   <module>   s$   
