o
    ^i                  	   @   s   d dl Z d dlZd dlZd dlmZmZmZmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d dlmZ d dlmZ d d	lmZ d d
lmZ d dlmZ ejdejejg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&ejdej'ejej(gdd  Z)ejdej'ejej(gd!d" Z*d#d$ Z+ejd%dd&gejdej,ej-ej(gejd'g d(d)d* Z.ej/0d  e1 Z2e3e2Z4e5e4d+ d, Z4d-d. Z6d/d0 Z7ejdej'ejej(gd1d2 Z8d3d4 Z9d5d6 Z:ejd7d&d d8gfdd d9gfd:d;d<gfgd=d> Z;ejd7d&d?d@gfddAd8gfdBdCdDgfgdEdF Z<dGdH Z=dIZ>dJZ?dKZ@dLZAdMdN ZBdOdP ZCejdej'ejej(gdQdR ZDdSdT ZEejdejejFej'ejej(gdUdV ZGdWdX ZHdYdZ ZId[d\ ZJd]d^ ZKd_d` ZLdadb ZMdcdd ZNejjOeejPedek dfdgejdhdidjgdkdl ZQejdmdnej,fdoejRfdpejRfdqejRfdreSfgdsdt ZTdudv ZUdwdx ZVdydz ZWejdej'ejej(gd{d| ZXd}d~ ZYdd ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcejdej'ejej(gdd Zddd Zedd Zfdd Zgdd Zhejdej'ejej(gdd Zidd Zjdd Zkejdej'ejej(gdd Zldd Zmdd Zndd Zodd Zpdd Zqdd Zrejdejsejtejugdd Zvdd Zwdd ZxdS )    N)assert_allcloseassert_almost_equalassert_array_almost_equalassert_array_equalassert_equal)Version)data)exposure)util)rgb2gray)intensity_range)dtype_range)expected_warnings)_supported_float_typedtypec                 C   sX   t jddg| d}tjtdd tj|dd\}}W d    d S 1 s%w   Y  d S )Nd   r   z+Incorrect value for `source_range` argumentmatchfoobarsource_range)nparraypytestraises
ValueErrorr	   	histogramr   imfrequenciesbin_centers r#   _/var/www/html/RAG/RAG_venv/lib/python3.10/site-packages/skimage/exposure/tests/test_exposure.pytest_wrong_source_range   s   "r%   c                  C   sj   t jddgt jd} t| \}}t|t dd |d dks"J |d dks*J t|dd d d S )Nr   r   r   e   r      r   r   int8r	   r   r   aranger    r!   r"   r#   r#   r$   test_negative_overflow#      r,   c                  C   sj   t jddgt jd} t| \}}t|t dd |d dks"J |d dks*J t|dd d d S )Nir   r   r   r'   r(   r+   r#   r#   r$   test_all_negative_image,   r-   r.   c                  C   sT   t jddgt jd} t| \}}tt|t| t|d d t|d d d S )N
   r   r   r   r   )r   r   r)   r	   r   r   lenr+   r#   r#   r$   test_int_range_image5   s
   r1   c                  C   sx   t jddgddggt jd} tj| dd\}}t| jd D ]}tt|| t| qt|d d t|d d d S )	Nr/      r   f   r   r   )channel_axisr   )	r   r   r)   r	   r   rangeshaper   r0   )r    r!   r"   chr#   r#   r$   !test_multichannel_int_range_image=   s   r8   c                  C   sr   t jddgt jd} tj| dd\}}t|t dd t|d d t|d d t|d	 d t|jd
 d S )Nr/   r   r   r   r   r      r'   r&   r9   )	r   r   uint8r	   r   r   r*   r   r6   r+   r#   r#   r$   test_peak_uint_range_dtypeF      r<   c                  C   sr   t jddgt jd} tj| dd\}}t|t dd t|d d	 t|d
 d	 t|d d t|jd d S )Nr/   r   r   r   r         r'         r   r:   )	r   r   r)   r	   r   r   r*   r   r6   r+   r#   r#   r$   test_peak_int_range_dtypeP   r=   rC   c                  C   sH   t jdddt jd} tj| dd\}}t|t dd t|jd d S )Nr      r9   r   r   r   r:   )	r   linspacer;   r	   r   r   r*   r   r6   r+   r#   r#   r$   test_flat_uint_range_dtypeZ      rF   c                  C   sH   t jdddt jd} tj| dd\}}t|t dd t|jd d S )Nr>   r?   r9   r   r   r   r:   )	r   rE   r)   r	   r   r   r*   r   r6   r+   r#   r#   r$   test_flat_int_range_dtypea   rG   rH   c                 C   sL   t jddg| d}tj|dd\}}|j| ksJ t|t ddd  d S )Nr/   r   r   Z   nbins      ?)r   r   r	   r   r   r   r*   r   r#   r#   r$   "test_peak_float_out_of_range_imageh   s   rM   c                 C   sn   t jddg| d}d}tj||dd\}}|j| ksJ tt |dd tt |dd tt	|d d S )	Nr/   r   r   r   )rK   r   g   ?)
r   r   r	   r   r   r   minmaxr   r0   )r   r    rK   r!   r"   r#   r#   r$   "test_peak_float_out_of_range_dtypeq   s   rR   c                  C   sv   t jg dt jd} tj| ddd\}}t d}d|d< d	|d
< t|| tj| ddd\}}|d }t|| d S )N)r   rD   rD   r   r   F)r   	normalizer9   r'   r      r   Tg      @)r   r   r;   r	   r   zerosr   )r    r!   r"   expectedr#   r#   r$   test_normalize|   s   



rW   r   imager4   )r   r'   r   c           
      C   s   d}|d |d  }t |  \}}tjtj||| dtj||| df|d}tj|||d\}}	t| tjrAt|	t	||d  |d d |ksKJ |d d dksUJ |d d dks_J |d d |ksiJ dS )	z-Check that all channels use the same binning.)r2   r2   r   r'   r   )axis)r   r4   r   N)
r   r   stackfullr	   r   
issubdtypeintegerr   r*   )
r   r   r4   r6   channel_sizeiminimaxr    r!   r"   r#   r#   r$   (test_multichannel_hist_common_bins_uint8   s$   
ra   g      @r   c                  C   s&   t t} t jtdd}t| | dS )z)Check integer bins used for uint8 images.rN   rJ   N)r	   equalize_histtest_img_intr   )img_eq0img_eq1r#   r#   r$   test_equalize_uint8_approx   s   
rf   c                  C   s.   t t} t| }t|\}}t| d S )N)r
   img_as_ubytetest_imgr	   rb   cumulative_distributioncheck_cdf_slope)imgimg_eqcdf	bin_edgesr#   r#   r$   test_equalize_ubyte   s   

ro   c                 C   s\   t tj| dd}t|}|jt| ksJ t|\}}t	| |jt| ks,J d S )NFcopy)
r
   img_as_floatrh   astyper	   rb   r   r   ri   rj   )r   rk   rl   rm   rn   r#   r#   r$   test_equalize_float   s   
rt   c                  C   sl   t t} ttj}d|ddddf< tj| |d}t| }t|\}}t	| ||k
 r4J d S )Nr'   r   i  )mask)r
   rr   rh   r   rU   r6   r	   rb   ri   rj   all)rk   ru   img_mask_eqrl   rm   rn   r#   r#   r$   test_equalize_masked   s   

rx   c                 C   sD   t ddt| }t || d\}}d|  k rdk s J  J dS )z=Slope of cdf which should equal 1 for an equalized histogram.r   r'   rO   皙?N)r   rE   r0   polyfit)rm   norm_intensityslope	interceptr#   r#   r$   rj      s    rj   ztest_input,expectedr'   rD   )r/      r/   r~   c                 C   .   t jddgt jd}t|| d}t|| d S )Nr   r'   r   range_values)r   r   r;   r   r   
test_inputrV   rX   outr#   r#   r$   test_intensity_range_uint8      r   皙?皙?r   )333333?皙?r   r   c                 C   r   )Nr   r   r   r   r   r   float64r   r   r   r#   r#   r$   test_intensity_range_float   r   r   c                  C   s0   t jddgt jd} t| ddd}t|d d S )Nr   r   r   r   T)r   clip_negative)r   r'   r   rX   r   r#   r#   r$   "test_intensity_range_clipped_float   s   r   i  i  i?  i  c                  C   s@   t jg dt jd} t| }|jt jksJ t|g d d S )N3   r3      r   r      rD   )r   r   r;   r	   rescale_intensityr   r   r   r#   r#   r$   test_rescale_stretch  s   
r   c                  C   s*   t g d} t| }t|g d d S )Ng     I@g     Y@g      c@)r   rL   r'   r   r   r	   r   r   r   r#   r#   r$   test_rescale_shrink  s   
r   c                 C   sF   t jg d| d}tj|dd}t|g ddd |j|jks!J d S )Nr   r   r   rD   in_range)r   r   g333333?   )decimal)r   r   r	   r   r   r   r   rX   r   r#   r#   r$   test_rescale_in_range  s   r   c                  C   s.   t g d} tj| dd}t|g d d S )Nr   )r   r3   r   )rL   r'   r'   r   r   r#   r#   r$   test_rescale_in_range_clip"  s   r   c                 C   sF   t jg d| d}tj|dd}|jt|jksJ t|g d dS )a?  Check that output range is correct.

    .. versionchanged:: 0.17
        This function used to return dtype matching the input dtype. It now
        matches the output.

    .. versionchanged:: 0.19
        float16 and float32 inputs now result in float32 output. Formerly they
        would give float64 outputs.
    )r   r/   r   r   r   	out_range)r   g     O@r   N)r   r   r	   r   r   r   r   r   r#   r#   r$   test_rescale_out_range(  s   r   c                  C   s<   t jdttd gt jd} tj| dd}t|dttg d S )Nr   r   r   uint10r   )r   r   
uint10_maxuint16r	   r   r   
uint16_maxr   r#   r#   r$   test_rescale_named_in_range<  s   r   c                  C   4   t jdtgt jd} tj| dd}t|dtg d S )Nr   r   r   r   )r   r   r   r   r	   r   r   r   r   r#   r#   r$   test_rescale_named_out_rangeB     r   c                  C   r   )Nr   r   uint12r   )r   r   r   r   r	   r   r   
uint12_maxr   r#   r#   r$   test_rescale_uint12_limitsH  r   r   c                  C   r   )Nr   r   uint14r   )r   r   r   r   r	   r   r   
uint14_maxr   r#   r#   r$   test_rescale_uint14_limitsN  r   r   c                  C   s<   t jdt jd} t| }t |  sJ t||  d S )NrT   rT   r   )r   rU   r;   r	   r   isnanrv   r   r   r#   r#   r$   test_rescale_all_zerosT  s   
r   c                  C   s4   t jddgt jd} tj| dd}t|ddg d S )N   r   r   r   r   )r   r   r   r	   r   r   r   r#   r#   r$   test_rescale_constant[  r   r   c                  C   s6   t d} t| }t |  sJ t||  d S )Nr   )r   onesr	   r   r   rv   r   r   r#   r#   r$   test_rescale_same_valuesa  s   

r   z1.25z,Older NumPy throws a few extra warnings herereasonzin_range,out_range)rX   r   )r   rX   c                 C   s^   t jdtddd}t j|d< tdg t|| | W d    d S 1 s(w   Y  d S )N   r   rN   r   )r'   r'   zWOne or more intensity levels are NaN\. Rescaling will broadcast NaN to the full image\.)r   r*   floatreshapenanr   r	   r   )r   r   rX   r#   r#   r$   test_rescale_nan_warningh  s   
"r   zout_range, out_dtyper;   r   r   r   r   c                 C   s4   t jg dt jd}tj|| d}|j|ksJ d S )Nr>   r   r   r   r   )r   r   r)   r	   r   r   )r   	out_dtyperX   output_imager#   r#   r$   test_rescale_output_dtypez  s   r   c                  C   sF   t jg dt jd} tj| t jd}t|g d |jt jks!J d S )Nr   r   r   r   r?   rD   )r   r   r)   r	   r   r;   r   r   rX   r   r#   r#   r$   test_rescale_no_overflow  s   r   c                  C   sB   t jg dt jd} tj| dd}t|g d |jtksJ d S )Nr   r   r   r   r   )r   r   r)   r	   r   r   r   r   r   r#   r#   r$   test_rescale_float_output  s   r   c                  C   sR   t jg dt jd} tt tj| dd}W d    d S 1 s"w   Y  d S )Nr   r   flatr   )r   r   r)   r   r   r   r	   r   )rX   _r#   r#   r$   *test_rescale_raises_on_incorrect_out_range  s   "r   c                 C   s   t t j| dd}t|}t|||f}tj	|dddd}|j
|j
ks)J |jt| ks2J | tjkr9dnd}tt||d	| tt||d
d dS )zTest a grayscale float imageFrp   )9   r   {Gz?r?   )kernel_size
clip_limitrK   rN   rT   g)\Y@ghs?N)r
   rr   r   	astronautrs   r   r   dstackr	   equalize_adapthistr6   r   r   float16r   peak_snrnorm_brightness_err)r   rk   adaptedsnr_decimalr#   r#   r$   test_adapthist_grayscale  s   r   c                  C   s   t t } tjdd}td t| \}}t	|dks"J W d   n1 s,w   Y  tj
| dd}| dks@J | dksHJ | j|jksPJ t| }tt||d	d
 tt||dd dS )zTest an RGB color uint16 imageT)recordalwaysr   Nr   r         ?x&Y[@r'   {Gz?rT   )r
   img_as_uintr   r   warningscatch_warningssimplefilterr	   r   r0   r   rP   rQ   r6   r   r   r   r   )rk   whistr"   r   
full_scaler#   r#   r$   test_adapthist_color  s   

r   c                  C   s   t t } tj| jd | jd ftd}t| |f} t	
| }|j| jks*J | ddddddf } t	| }| j|jksDJ tt||dd tt||dd dS )	zTest an RGBA color imager   r'   r   NrN   r   rT   ga+e?)r
   rr   r   r   r   r   r6   r   r   r	   r   r   r   r   r   )rk   alphar   r   r#   r#   r$   test_adapthist_alpha  s   

r   c                  C   s   t t } t| } d}t | dd|dd|f }t|g| jd |  }tj	|ddd}tj	|ddd}|j|jksAJ |j|jksIJ t
t|||jd d   dk s^J d	S )
z
    Test for n-dimensional consistency with float images
    Note: Currently if img.ndim == 3, img.shape[2] > 4 must hold for the image
    not to be interpreted as a color image by @adapt_rgb
       r   r   r2   g?)r   r   rT   r   N)r
   rr   r   r   r   r   r   r6   r	   r   meanabs)rk   aimg2dimg3d	adapted2d	adapted3dr#   r#   r$   test_adapthist_grayscale_Nd  s   .r   c                  C   s   t d} | d7 } | t j} t| d}t |t |ks!J t d} | d7 } | t j} t| d}t |t |ksBJ dS )z#Test constant image, float and uint   r   rT   rN   r   N)	r   rU   rs   r   r	   r   rP   rQ   r   )rk   r   r#   r#   r$   test_adapthist_constant  s   

r   c                  C   s   t tt } | d } d| | jd d | jd d f< d}tdddD ]4}tj| |d	d
}t	|dd|f | dd|f dksDJ t	||ddf | |ddf dksYJ q%dS )zTest border processingg      Y@r   r   rT   r'   r   r   G   rL   r   Nr   )
r   r
   rr   r   r   r6   r5   r	   r   r   )rk   border_indexr   r   r#   r#   r$   test_adapthist_borders  s    *,r   c                  C   sb   t  } t| }tj| dd}tj| dd}t|| tj|dd}tj|dd}t|| d S )Nr   r   r'   )r   moonr
   rr   r	   r   r   )img_uimg_f
img_clahe0
img_clahe1r#   r#   r$   test_adapthist_clip_limit  s   

r   c                 C   sv   | j dkrt|  t| } }t| } t|}d| j t| |   }t	| j
j \}}dt||  S )zPeak signal to noise ratio of two images

    Parameters
    ----------
    img1 : array-like
    img2 : array-like

    Returns
    -------
    peak_snr : float
        Peak signal to noise ratio
    rN   r   r~   )ndimr   rq   r
   rr   sizer   squaresumr   r   typelog)img1img2mser   max_r#   r#   r$   r     s   


r   c                 C   sJ   | j dkrt| t|} }t|  |  }|t| jj d  }|S )zNormalized Absolute Mean Brightness Error between two images

    Parameters
    ----------
    img1 : array-like
    img2 : array-like

    Returns
    -------
    norm_brightness_error : float
        Normalized absolute mean brightness error
    rN   r'   )r  r   r   r   r   r   r   r  )r  r  ambenber#   r#   r$   r   1  s
   
r   c                  C   sN   t jdtd} tjtdd t| d W d    d S 1 s w   Y  d S )Nr   r   z Incorrect value of `kernel_size`r   )rN   rN   rN   )r   r   r   r   r   r   r	   r   rk   r#   r#   r$   $test_adapthist_incorrect_kernel_sizeE  s   "r  c                  C   s.   t ddg} t| d}| j|jksJ dS )"Check that the shape is maintainedr'   g      ?N)r   r   r	   adjust_gammar6   )rk   resultr#   r#   r$   test_adjust_gamma_1x1_shapeO  s   r  c                  C   s2   t jddt jdd} t| d}t||  dS )z4Same image should be returned for gamma equal to oner   r9   r      r  r'   N)r   r*   r;   r   r	   r  r   )rX   r  r#   r#   r$   test_adjust_gamma_oneV  s   r  c                 C   sT   t jdddj| dd}t|d}|jj} t|t	|  d  |j|jks(J dS )z6White image should be returned for gamma equal to zeror   rD   r   Frp   r'   N)
r   randomuniformrs   r	   r  r   r  r   r   )r   rX   r  r#   r#   r$   test_adjust_gamma_zero]  s
   r  c                  C   L   t jddt jdd} t jg dt jdd}t| d}t|| dS )z\Verifying the output with expected results for gamma
    correction with gamma equal to halfr   r9   r   r  (   r   r            $   '   *   -   0   2   5   7   :   <   >   @   B   D   F   r   I   K   M   N   P   Q   S   T   V   W   Y   rI   \   ]   ^   `   a   b   r   r&   r3   g   i   j   k   l   m   o   p   q   r   s   t   u   v   w   y   z   {   |   }   ~   r   r?      r                  rW        r@                        r`                    rf     r            rj              rn              rr           ru           rx           r{           r~           r        r        r           r        r        r        r        r        r        r     r        r        r     r        r        r     r        r     r        r     r        r     r        r     r     r        r     r     r     rA   rA   rB   rB      r     r        r     r     r     r     r     r        r     r     r     r     r     r     r     r     r     r     r     r     r     r     r  rD   rL   Nr   r*   r;   r   r   r	   r  r   rX   rV   r  r#   r#   r$   test_adjust_gamma_less_oneg  &             r  c                  C   r  )z[Verifying the output with expected results for gamma
    correction with gamma equal to twor   r9   r   r  (   r   r   r   r   r   r   r   r   r   r   r   r   r'   r'   r'   r'   r'   r'   r'   r'   rT   rT   rT   rT   rT   rT   rN   rN   rN   rN   r   r   r   r   r2   r2   r2   r2      r  r     r  r  r   r   r   	   r  r  r/   r/      r  r  r   r      r     r  r   r   r  r     r     r     r  r~   r~      r     r  r     r        r     r  r        r     r  r  !   "   #   r  r  %   &   r  r  (   )   r  r  +   ,   r   .   /   r  r!  1   r"  r   4   r#  6   r$  8   r  r   r%  ;   r&  =   r'  ?   r(  A   r)  C   r*  E   r+  r   r,  J   r-  L   r.  r/  O   r0  r1  R   r3  U   r4  r5  X   r6  [   r7  r8  r9  _   r;  r<  c   r   r3   r=  h   r>  r@  rA  rB  rC  rD  rE  rG  rH  rI  rK  x   rL  rN  rO  rQ  r   r?   r   rS  rU  rV  rX  rY  rZ  r[  r]  r^  r`  ra  rc  rd  rf  rg  rh  ri  rk  rl  rn  rp  rq  rs  rt  rv  rx  ry  r{  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  rA   r  r  r  r  r  r  r  r  r  r  r  r  r  rD   rT   Nr  r  r#   r#   r$   test_adjust_gamma_greater_onev  r  r  c                  C   sT   t dddt jd} tt t| d W d    d S 1 s#w   Y  d S )Nr   rD   r   r   r   )	r   r*   r;   r   r   r   r   r	   r  rX   r#   r#   r$   test_adjust_gamma_negative  s   "r  c                  C   s6   dt jdt jd } t tj| ddddksJ d S )NrD   r   r   r'   ry   )gammagain)r   r   r;   rv   r	   r  r  r#   r#   r$   test_adjust_gamma_u8_overflow  s   "r  c                 C   s@   t jddg| d}t|d}|j|jksJ |j| ksJ dS )r  r'   r   N)r   r   r	   
adjust_logr6   r   r   rk   r  r#   r#   r$   test_adjust_log_1x1_shape  s   r	  c               
   C   sr   t dddt jd} t jg dg dg dg dg d	g d
g dg dgt jd}t| d}t|| dS )z|Verifying the output with expected results for logarithmic
    correction with multiplier constant multiplier equal to unityr   rD   r   r   )r   r2   r  r  r  r  r  r  )r  r!  r#  r%  r  r*  r,  r.  )r  r4  r  r  r   r  rB  rE  )rI  rL  rP  rR  rU  rY  r\  r`  )rd  r   rk  rn  rr  rv  rz  r}  )r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  rA   )r  r  r  r  r  r  r  r  r   r'   Nr   r*   r;   r   r   r	   r  r   r  r#   r#   r$   test_adjust_log  s   
r  c               
   C   t   t dddt jd} t jg dg dg dg dg d	g d
g dg dgt jd}t| dd}t|| dS )zVerifying the output with expected results for inverse logarithmic
    correction with multiplier constant multiplier equal to unityr   rD   r   r   )r   rT   r2   r   r  r  r  r~   )r  r  r  r  r  r  r  r   )r!  r   r$  r%  r  r  r*  H   )r  r  r2  r5  rI   r9  r<  r3   )r?  n   rF  rJ  rM  rQ  r   rV  )r@   r^  rb  rf  rj  rn  rs  rx  )r|  r  r  r  r  r  r  r  )r  r  r  rB   r  r  r  r  r   r'   TNr
  r  r#   r#   r$   test_adjust_inv_log     
r  c                 C   sB   t jddg| d}t|dd}|j|jksJ |j| ksJ dS )r  r'   r   r2   N)r   r   r	   adjust_sigmoidr6   r   r  r#   r#   r$   test_adjust_sigmoid_1x1_shape  s   r  c               
   C   r  )zlVerifying the output with expected results for sigmoid correction
    with cutoff equal to one and gain of 5r   rD   r   r   )r'   r'   r'   rT   rT   rT   rT   rT   )rN   rN   rN   r   r   r   r2   r2   )r2   r  r  r  r  r   r  r/   )r/   r  r   r  r  r   r  r  )r  r~   r  r  r  r  r  r  )r  r  r  r  r  r  r"  r  )r   r  r(  r*  r  r  r0  r  )r6  r9  r  r  rA  rE  rJ  rN  r   r'   r2   Nr   r*   r;   r   r   r	   r  r   r  r#   r#   r$   test_adjust_sigmoid_cutoff_one  r  r  c               
   C   st   t dddt jd} t jg dg dg dg dg d	g d
g d
g d
gt jd}t| dd}t|| dS )znVerifying the output with expected results for sigmoid correction
    with cutoff equal to zero and gain of 10r   rD   r   r   )r   rY  rb  rj  rt  r}  r  r  )r  r  r  r  r  r  rB   r  )r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  r   r/   Nr  r  r#   r#   r$   test_adjust_sigmoid_cutoff_zero  r  r  c               
   C   r  )znVerifying the output with expected results for sigmoid correction
    with cutoff equal to half and gain of 10r   rD   r   r   )r'   r'   rT   rT   rN   rN   r   r2   )r2   r  r  r  r/   r   r  r  )r  r  r  r  r  r  r  r"  )r   r(  r  r0  r6  r  rA  rJ  )r?   r@   rc  rl  ru  r~  r  r  )r  r  r  r  r  r  rB   r  )r  r  r  r  r  r  r  r  r  r   rL   r/   Nr  r  r#   r#   r$   test_adjust_sigmoid_cutoff_half  r  r  c               
   C   sv   t dddt jd} t jg dg dg dg dg d	g d
g dg dgt jd}t| ddd}t|| dS )zvVerifying the output with expected results for inverse sigmoid
    correction with cutoff equal to half and gain of 10r   rD   r   r   )r  r  r  r  r  r  r  r  )r  r  r  r  r  r  r  r  )r  r  rB   r  r  r  r  r  )r  r  r  r|  rs  ri  ra  rX  )rQ  rH  r?  r:  r5  r/  r+  r'  )r$  r  r  r  r  r  r  r  )r  r  r  r   r/   r   r  r  )r2   r   r   rN   rN   rT   rT   r'   r   rL   r/   TNr  r  r#   r#   r$   #test_adjust_inv_sigmoid_cutoff_half  s   
r  c                  C   s   t ddd} t| sJ d| d< t| sJ tj| ddr"J | d t j} t| s1J tj| ddr:J | t jd } t| sIJ tj| ddrRJ d S )	Nr   g{Gz?r   r'   r   )upper_percentilerD   r9   )r   rE   r	   is_low_contrastrs   r;   r   r  r#   r#   r$   test_is_low_contrast/  s   r  c                  C   s:   t jdtd} t| sJ d| d d< t| rJ d S )Nr   r   r'   r2   )r   rU   boolr	   r  r  r#   r#   r$   test_is_low_contrast_boolean?  s   r  exposure_funcc                 C   sT   t ddddt j}tt | | W d    d S 1 s#w   Y  d S )Nr   r  r   r   )r   r*   r   rs   r   r   r   r   )r  rX   r#   r#   r$   test_negative_inputK  s   
"r  c                  C   s   t jddd dd lm}  | jtddgddggdd}t|\}}g d	}g d
}t||s4J t||s<J t	|| j
sDJ d S )Ndask$dask python library is not installedr   r   r'   rT   )r'   rT   )chunks)r   r'   rT   )r'   rT   r'   )r   importorskip
dask.arrayr   
from_arrayr   r	   r   allclose
isinstanceArray)da
dask_arrayoutput_histoutput_binsexpected_binsexpected_histr#   r#   r$   test_dask_histogramY  s    r/  c                  C   sj   t jddd dd lm}  | jg dtjd}t|}|jtjks$J t	|g d t
|| js3J d S )Nr   r!  r   r   r   r   r   )r   r#  r$  r   r   r;   r	   r   r   r   r'  r(  )r)  rX   r   r#   r#   r$   test_dask_rescalef  s   
r0  )yr   numpyr   r   numpy.testingr   r   r   r   r   packaging.versionr   skimager   r	   r
   skimage.colorr   skimage.exposure.exposurer   skimage.util.dtyper   skimage._shared._warningsr   skimage._shared.utilsr   markparametrizer)   float32r%   r,   r.   r1   r8   r<   rC   rF   rH   r   r   rM   rR   rW   r;   int16ra   r  seedcamerarc   rr   rh   r   rf   ro   rt   rx   rj   r   r   r   r   r   r   r   r   r   r   r   int32r   r   r   r   r   r   r   r   skipif__version__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r  r  r  r  r  r  r  r/  r0  r#   r#   r#   r$   <module>   s   
			







 
 
	







	    




