
    1-Ph                     |    d dl Z d dlZd dlZd dlmZ d dlmZmZ d dl	m
Z
mZ d dlmZ  G d de j                  ZdS )    N)assert_equal)binary_dilationbinary_erosion)datafeature)img_as_floatc                   V    e 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 )	TestCannyc           
          t          j        t          j        d          dddt          j        dt
                              }|                     t          j        |                     dS )z<Test that the Canny filter finds no points for a blank field   r      r   N)r   cannynpzerosonesboolassertFalseanyselfresults     `/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/feature/tests/test_canny.pytest_00_00_zeroszTestCanny.test_00_00_zeros   sQ    rx111aBGHd<S<STT(((((    c           
          t          j        t          j                            d          dddt          j        dt                              }|                     t          j        |                     dS )z<Test that the Canny filter finds no points in a masked imager   sizer   r   N)	r   r   r   randomuniformr   r   r   r   r   s     r   test_00_01_zeros_maskzTestCanny.test_00_01_zeros_mask   sa    I8,,aArx$7O7O
 
 	(((((r   c           
         t           j        ddddf                             t                    dz  \  }}t          j        t          j        ||z  ||z  z             dz
            dk     }t          j        |                    t                    dddt          j        |j	        t                              }t          |d          }t          |d          }t          j        |t          j        |                    }|                     t          j        ||                              t          j        |          }|                     |d	k               |                     |d
k                dS )z9Test that the Canny filter finds the outlines of a circle8         ?{Gz?r   r      
iterations  @  N)r   mgridastypefloatabssqrtr   r   r   shaper   r   r   logical_andlogical_not
assertTrueallsum)	r   ijcr   cdcecdepoint_counts	            r   test_01_01_circlezTestCanny.test_01_01_circle   s4   xS$s(*+22599C?1F271q51q5=))C/0047qxx1a$9O9OPP
 Q1---A!,,,nR!3!344s6{++,,, fVnnd*+++d*+++++r   c           
         t           j                            d           t           j        ddddf                             t
                    dz  \  }}t          j        t          j        ||z  ||z  z             dz
            dk     }|                    t
                    dz  t           j                            |j	                  dz  z   }t          j        |ddd	t          j        |j	        t                              }t          |d
          }t          |d
          }t          j        |t          j        |                    }|                     t          j        ||                              t          j        |          }	|                     |	dk               |                     |	dk                dS )zMTest that the Canny filter finds the circle outlines
        in a noisy imager   r#   r$   r%   r&   r   r   皙?皙?r(   r*   r+   N)r   r   seedr,   r-   r.   r/   r0   r    r1   r   r   r   r   r   r   r2   r3   r4   r5   r6   )
r   r7   r8   r9   cfr   r:   r;   r<   r=   s
             r   test_01_02_circle_with_noisez&TestCanny.test_01_02_circle_with_noise.   sq    		qxS$s(*+22599C?1F271q51q5=))C/0047XXe__s"RY%6%6AG%6%D%Ds%JJr1c30F0FGG
 Q1---A!,,,nR!3!344s6{++,,,fVnnd*+++d*+++++r   c                 |    |                      t          t          j        t	          j        d          ddd           d S )N)r   r   r   r   r   )assertRaises
ValueErrorr   r   r   r   )r   s    r   test_image_shapezTestCanny.test_image_shapeB   s4    *gmRXl5K5KQPQSTUUUUUr   c           
      2   t          j        t          j        d          dddt          j        dt
                              }t          j        t          j        d          ddd          }|                     t          j        ||k                         d S )Nr   r   r   )r   r   r   r   r   r   r4   r5   )r   result1result2s      r   test_mask_nonezTestCanny.test_mask_noneE   su    - 2 2Aq!RWXt=T=TUU- 2 2Aq!<<w'12233333r   c           	          t          t          j                    d d dd d df                   }t          j        g dg dg dg dg dg dg          }t          j        |ddd	          }t          ||           d S )
Nd   )FFFFFF)FTTTFF)FFFTFF)FFTTFFg333333?g?T)low_thresholdhigh_thresholduse_quantiles)r   r   camerar   arrayr   r   r   )r   imagecorrect_outputr   s       r   test_use_quantileszTestCanny.test_use_quantilesJ   s    T[]]55S5%%C%<899 :::777999999888:::	
 	
 S
 
 
 	V^,,,,,r   c                     t          j        d          }t          j        t          j        |          dk              sJ d S )N
   rY   r   )r   r   r5   r   r   r   rT   s     r   test_img_all_oneszTestCanny.test_img_all_ones`   s<    !!vgmE**a/0000000r   c                 ,   t          t          j                    d d dd d df                   }|                     t          t
          j        |ddd           |                     t          t
          j        |ddd           |                     t          t
          j        |ddd           |                     t          t
          j        |ddd	           t          j                    }|                     t          t
          j        |ddd
           d S )N2   Tr%   g@)rQ   rO   rP   c   g?i   )r   r   rR   rF   rG   r   r   rZ   s     r   test_invalid_use_quantilesz$TestCanny.test_invalid_use_quantilesd   s<   T[]]44R42:677M 	 	
 	
 	
 	M 	 	
 	
 	
 	M 	 	
 	
 	
 	M 	 	
 	
 	
 M 	 	
 	
 	
 	
 	
r   c           
      B   t          j                    }t          |          }t          j        |          }t          j        |          }t          ||           d}d}t          t          j        |d||          t          j        |dd|z  d|z                       dS )zACheck that the same output is produced regardless of image dtype.r@   rA   g      ?   N)r   rR   r   r   r   r   )r   image_uint8image_floatresult_uint8result_floatlowhighs          r   
test_dtypezTestCanny.test_dtype   s    kmm";//}[11}[11\<000M+sC66M+sC#IsTzBB	
 	
 	
 	
 	
r   c                     t          j                    }dD ]T}t          t          j        ||          t          j        ||t          j        |t                                         UdS )zAThe masked and unmasked algorithms should return the same result.)constantnearestreflect)modedtype)ro   maskN)r   rR   r   r   r   r   	ones_liker   )r   rT   ro   s      r   test_full_mask_matches_no_maskz(TestCanny.test_full_mask_matches_no_mask   sr    6 	 	De$///e$R\%t5T5T5TUUU   	 	r   c                 .   t           j        t           j        fD ]{}t          j        d|          }t          j        |          j        |d<   t          j        t          d          5  t          j
        |           d d d            n# 1 swxY w Y   |d S )NrX   rp   )r'   r'   z'64-bit integer images are not supported)match)r   int64uint64r   iinfomaxpytestraisesrG   r   r   )r   rq   rT   s      r   test_unsupported_int64z TestCanny.test_unsupported_int64   s    h	* 	% 	%EHXU333E(5//-E$K"K   % % e$$$% % % % % % % % % % % % % % %	% 	%s   (B		B	B	N)__name__
__module____qualname__r   r!   r>   rD   rH   rL   rV   r[   ra   rj   rt   r}    r   r   r
   r
   
   s        ) ) )
) ) ), , ,., , ,(V V V4 4 4
- - -,1 1 10
 0
 0
d
 
 
$  % % % % %r   r
   )unittestnumpyr   r{   skimage._shared.testingr   scipy.ndimager   r   skimager   r   skimage.utilr   TestCaser
   r   r   r   <module>r      s          0 0 0 0 0 0 9 9 9 9 9 9 9 9 ! ! ! ! ! ! ! ! % % % % % %o% o% o% o% o%! o% o% o% o% o%r   