
    1-Ph5                         d dl Zd dlZd dlmZmZ d dlmZmZm	Z	m
Z
 d dlmZ  G d d          Z G d d          Z G d	 d
          ZdS )    N)expected_warningsrun_in_parallel)graycomatrixgraycopropslocal_binary_patternmultiblock_lbp)integral_imagec                       e Zd Zd Z e            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 Zd Zd Zd Zd Zd Zd Zd Zd Zd ZdS )TestGLCMc                 h    t          j        g dg dg dg dgt           j                  | _        d S )N)r   r      r   )r      r   r   )r   r      r   dtypenparrayuint8imageselfs    b/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/skimage/feature/tests/test_texture.pysetup_methodzTestGLCM.setup_method   s>    X\\<<<|||DBH
 
 



    c           	      |   t          | j        dgdt          j        dz  t          j        dz  dt          j        z  dz  gd          }|j        dk    sJ t          j        g dg dg d	g d
gt          j                  }t          j                            |d d d d ddf         |           t          j        g dg dg dg dgt          j                  }t          j                            |d d d d ddf         |           t          j        g dg dg dg dgt          j                  }t          j                            |d d d d ddf         |           t          j        g dg dg dg dgt          j                  }t          j                            |d d d d ddf         |           d S )Nr   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   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   	r   r   r   pishaper   uint32testingassert_array_equal)r   result	expected1	expected2	expected3	expected4s         r   test_output_angleszTestGLCM.test_output_angles   s   JaBEAIq25y1}Eq
 
 ||++++H\\<<<|||DBI
 
 
	 	
%%fQQQ1aZ&8)DDDH\\<<<|||DBI
 
 
	 	
%%fQQQ1aZ&8)DDDH\\<<<|||DBI
 
 
	 	
%%fQQQ1aZ&8)DDDH\\<<<|||DBI
 
 
	 	
%%fQQQ1aZ&8)DDDDDr   c                 $   t          | j        dgt          j        dz  gdd          }|j        dk    sJ t          j        g dg dg d	g d
gt          j                  }t          j                            |d d d d ddf         |           d S Nr   r   r   T	symmetric)r   r   r   r   )   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r    )r   r&   expecteds      r   test_output_symmetric_1z TestGLCM.test_output_symmetric_1+   s    dj1#	{ANNN||++++8\\<<<|||DBI
 
 
 	
%%fQQQ1aZ&8(CCCCCr   c                 B   t           t          j        t          j        t          j        t          j        fD ]i}t          j        t                    5  t          | j
                            |          dgt          j        gd           d d d            n# 1 swxY w Y   jd S Nr   r   )floatr   doublefloat16float32float64pytestraises
ValueErrorr   r   astyper!   r   r   s     r   test_error_raise_floatzTestGLCM.test_error_raise_float3   s    RY
BJ
K 	H 	HEz** H HTZ..u55sRUGQGGGH H H H H H H H H H H H H H H	H 	Hs   7BB	B	c                 `   t           j        t           j        t           j        t           j        t           j        t           j        fD ]h}t          j        t                    5  t          | j                            |          dgt           j        g           d d d            n# 1 swxY w Y   id S )Nr   )r   int16int32int64uint16r#   uint64r:   r;   r<   r   r   r=   r!   r>   s     r   test_error_raise_int_typesz#TestGLCM.test_error_raise_int_types8   s    h"(BIry")T 	E 	EEz** E ETZ..u55sRUGDDDE E E E E E E E E E E E E E E	E 	Es    6B""B&	)B&	c                     t          j        t                    5  t          | j                            t          j                  dz
  dgt          j        gd           d d d            d S # 1 swxY w Y   d S r4   )	r:   r;   r<   r   r   r=   r   rA   r!   r   s    r   test_error_raise_negativez"TestGLCM.test_error_raise_negative=   s    ]:&& 	K 	K**2844q81#wJJJ	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   AA++A/2A/c                     t          j        t                    5  t          | j        dz
  dgt
          j        gd           d d d            d S # 1 swxY w Y   d S )Nr   r   )r:   r;   r<   r   r   r   r!   r   s    r   #test_error_raise_levels_smaller_maxz,TestGLCM.test_error_raise_levels_smaller_maxA   s    ]:&& 	: 	:a!rugq999	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	: 	:s   'AAAc                    t           j        t           j        t           j        t           j        t           j        t           j        fD ]}| j                            |          }t          |dgt           j
        dz  gdd          }|j        dk    sJ t          j        g dg dg d	g d
gt           j                  }t           j                            |d d d d ddf         |           d S r-   )r   rD   r#   rE   rA   rB   rC   r   r=   r   r!   r"   r   r$   r%   )r   r   imgr&   r1   s        r   test_image_data_typeszTestGLCM.test_image_data_typesE   s    iBIrx28T 	H 	HE*##E**C!#sRUQYKdKKKF<<////x|||\\\<<<Hi  H J))&AAAq!*<hGGGGr   c                 >   t          j        g dg dg dg dgt           j                  }t          |dgdgdd	
          }t          j        g dg dg dg dgt           j                  }t           j                            |d d d d ddf         |           d S )Nr   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   Fr.   )r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r#   r$   r%   )r   imr&   r1   s       r   test_output_distancezTestGLCM.test_output_distanceR   s    X\\<<<|||DBH
 
 
 b1#sA???8\\<<<|||DBI
 
 
 	
%%fQQQ1aZ&8(CCCCCr   c                    t          j        dgdgdgdggt           j                  }t          |ddgdt           j        dz  gd          }|j        dk    sJ t          j        dt           j                  }t          j        g d	g d
g dg dgt           j                  }t          j        g d
g dg dg dgt           j                  }t           j        	                    |d d d d ddf         |           t           j        	                    |d d d d ddf         |           t           j        	                    |d d d d ddf         |           t           j        	                    |d d d d ddf         |           d S )Nr   r   r   r   r   r   )r   r   r   r   r   r   rO   rP   r   r   )
r   r   r   r   r!   r"   zerosr#   r$   r%   )r   rQ   r&   ze1e2s         r   test_output_combozTestGLCM.test_output_combo\   s   XsQC!qc*"(;;;b1a&1beai.!<<||++++HV29---X\\<<<|||DBI
 
 
 X\\<<<|||DBI
 
 
 	
%%fQQQ1aZ&8!<<<

%%fQQQ1aZ&8!<<<

%%fQQQ1aZ&8"===

%%fQQQ1aZ&8"=====r   c                    t          | j        dgdgd          }t          j                            |d d d d ddf         t          j        dt          j                             t          | j        dgdgdd          }t          j                            |d d d d ddf         t          j        dt          j                             d S )N
   r   r   rT   r   T)normed)r   r   r   r$   r%   rU   r#   r   r&   s     r   test_output_emptyzTestGLCM.test_output_emptyn   s    dj2$Q77

%%111aaaA:ry A A A	
 	
 	
 dj2$QtDDD

%%111aaaA:ry A A A	
 	
 	
 	
 	
r   c           
         t          | j        g ddt          j        dz  t          j        gddd          }t	          |j        d                   D ]}t	          |j        d                   D ]}t          j                            |d d d d ||f                                         d           t          j        	                    |d d d d ||f         |d d d d ||f         
                                           d S )	N)r   r   r   r   r   r   Tr\   r/   r         ?)r   r   r   r!   ranger"   r$   assert_almost_equalsumr%   	transpose)r   r&   das       r   test_normed_symmetriczTestGLCM.test_normed_symmetricx   s   J			Aruqy"%#8!DTX
 
 
 v|A'' 	 	A6<?++  
..vaaaAqj/A/E/E/G/GMMM
--111aaaA:&qqq!!!Qz(:(D(D(F(F   	 	r   c                     t          | j        ddgdgddd          }t          j        |d          }t	          |d          }t          j                            |d	         d
d           d S )Nr   r   r   r   Tr`   r   contrastr   r   gQ?decimal)r   r   r   roundr   r$   rc   )r   r&   rj   s      r   test_contrastzTestGLCM.test_contrast   sl    dj1a&1#qQUVVV&!$$vz22

&&x~ua&HHHHHr   c                     t          | j        dgdt          j        dz  gddd          }t          j        |d          }t          |d          }t          j                            |d	         d
d           d S )Nr   r   r   r   Tr`   r   dissimilarityrk   gn?rl   r   r   r   r!   rn   r   r$   rc   r   r&   rq   s      r   test_dissimilarityzTestGLCM.test_dissimilarity   s{    Ja^Qtt
 
 
 &!$$#FO<<

&&}T':E1&MMMMMr   c                     t          | j        ddgt          j        dz  gddd          }t          j        |d          }t          |d          d         }t          j                            |d	d
           d S )Nr   r   r   r   Tr`   rq   rk   gHzG?rl   rr   rs   s      r   test_dissimilarity_2zTestGLCM.test_dissimilarity_2   s{    JAQtt
 
 
 &!$$#FO<<TB

&&}eQ&GGGGGr   c                 8   t           j                            d          dz                      t           j                  }t	          |g dg dd          }t           j                            t          j        t          |d                    dk                d S )N)d   rx      )r   r   r      )r   g      ?r   g      ?)levelscorrelationra   )	r   randomr=   r   r   r$   assert_maxr   )r   rL   ps      r   test_non_normalized_glcmz!TestGLCM.test_non_normalized_glcm   s    y
++a/77AAlll,=,=,=aHHH

26+a"?"?@@3FGGGGGr   c                     t          | j        dgdgd          }t          j        t                    5  t          |d           d d d            d S # 1 swxY w Y   d S )Nr   r   r   ABC)r   r   r:   r;   r<   r   r]   s     r   test_invalid_propertyzTestGLCM.test_invalid_property   s    dj1#sA66]:&& 	' 	'&&&	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	' 	's   AAAc                     t          | j        dgddgddd          }t          |d          d         }t          j                            |d	           d S )
Nr   r   r0   r   Tr`   homogeneityrk   g?r   r   r   r   r$   rc   )r   r&   r   s      r   test_homogeneityzTestGLCM.test_homogeneity   sW    dj1#1vqQUVVV!&-88>

&&{J?????r   c                     t          | j        dgddgddd          }t          |d          d         }t          j                            |d           d S )	Nr   r   r   Tr`   energyrk   g3YNp?r   r   r&   r   s      r   test_energyzTestGLCM.test_energy   sW    dj1#1vqQUVVVVX..t4

&&vz:::::r   c                     t          | j        ddgdgddd          }t          |d          }t          j                            |d         d	           t          j                            |d
         d           d S )Nr   r   r   r   Tr`   r|   rk   g
U i?)r   r   gl	TZZ?r   r   s      r   test_correlationzTestGLCM.test_correlation   sr    dj1a&1#qQUVVVV]33

&&vd|Z@@@

&&vd|Z@@@@@r   c                     t          | j        dgdt          j        dz  gddd          }t	          |d          d         }t          j                            |d	           d S )
Nr   r   r   r   Tr`   meanrk   gI?r   r   r   r!   r   r$   rc   )r   r&   r   s      r   	test_meanzTestGLCM.test_mean   sg    Ja^Qtt
 
 
 66**40 	
&&tZ88888r   c                     t          | j        dgdt          j        dz  gddd          }t	          |d          d         }t          j                            |d	           d S )
Nr   r   r   r   Tr`   variancerk   ge7?r   )r   r&   r   s      r   test_variancezTestGLCM.test_variance   sg    Ja^Qtt
 
 
 vz2248 	
&&x<<<<<r   c                     t          | j        dgdt          j        dz  gddd          }t	          |d          d         }t          j                            |d	           d S )
Nr   r   r   r   Tr`   stdrk   g3&0P?r   )r   r&   r   s      r   test_stdzTestGLCM.test_std   sg    Ja^Qtt
 
 
 &%((. 	
&&sJ77777r   c                     t          | j        dgdt          j        dz  gddd          }t	          |d          d         }t          j                            |d	           d S )
Nr   r   r   r   Tr`   entropyrk   gv@L @r   )r   r&   r   s      r   test_entropyzTestGLCM.test_entropy   sg    Ja^Qtt
 
 
 fi006 	
&&w
;;;;;r   c                     t          j        dt           j                  }t          |g ddt           j        dz  gddd          }d	D ]}t          ||           d S )
NrT   r   )r   r   ry   r   r   r   Tr`   )
rj   rq   r   r   r|   ASMr   r   r   r   )r   onesr   r   r!   r   )r   rQ   r&   props       r   test_uniform_propertiesz TestGLCM.test_uniform_properties   sw    WV28,,,			Aruqy>1TT
 
 

 	& 	&D %%%%	& 	&r   N)__name__
__module____qualname__r   r   r+   r2   r?   rF   rH   rJ   rM   rR   rY   r^   rh   ro   rt   rv   r   r   r   r   r   r   r   r   r   r    r   r   r   r      s       
 
 

 _E E E,D D DH H H
E E E
K K K: : :  D D D> > >$
 
 
	 	 	I I IN N NH H HH H H
' ' '
@ @ @
; ; ;
A A A9 9 9= = =8 8 8< < <& & & & &r   r   c                       e Zd Zd Z e            d             Zd Zej        	                    de
j        e
j        e
j        g          d             Zd Zd Zd Zd	S )
TestLBPc           	      t    t          j        g dg dg dg dg dg dgt           j                  | _        d S )N)   r0   r   r      r   )0               ?   )ry   r      2   r      )   r   r   (      r   )r   r   r   "   r      )      r   r      ~   r   r   r   s    r   r   zTestLBP.setup_method   s`    X(((,,,(((,,,))),,, (

 

 




r   c           	          t          | j        ddd          }t          j        g dg dg dg dg dg d	g          }t          j                            ||           d S )
Nry   r   default)r      r   r   `   r   )   r         @   8   )   r         r      )   g      P@>   r      r   )r   r   r      r      )r   rz   r   r   r   r   r   r   r   r   r$   r%   r   lbprefs      r   test_defaultzTestLBP.test_default   s    "4:q!Y??h))))))+++,,,***%%%	
 	
 	
%%c3/////r   c           	          t          | j        ddd          }t          j        g dg dg dg dg dg d	g          }t          j                            ||           d S )
Nry   r   rorr      r   r   r   r      r   rz   3   r      w   r   r   r   r   r   r   r   r   r   r   r   r   r   r   _   r   r   r   rz   r   r   r   r   r   r   s      r   test_rorzTestLBP.test_ror  s    "4:q!U;;h((($$$)))%%%)))$$$	
 	
 	
%%c3/////r   r   c           	      >   | j                             |          }d}t          |g          5  t          |ddd          }d d d            n# 1 swxY w Y   t	          j        g dg dg dg dg d	g d
g          }t          j                            ||           d S )N8Applying `local_binary_pattern` to floating-point imagesry   r   r   r   r   r   r   r   r   )r   r=   r   r   r   r   r$   r%   )r   r   r   msgr   r   s         r   test_float_warningzTestLBP.test_float_warning  s    
!!%((Hu%% 	; 	;&uaE::C	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	;h((($$$)))%%%)))$$$	
 	
 	
%%c3/////s   AAAc           	          t          | j        ddd          }t          j        g dg dg dg dg dg d	g          }t          j                            ||           d S )
Nry   r   uniform)r   r   r   ry   r   ry   )rz   r   	   r   r   r   )r   ry   r   r   r   r0   )r   r   rz   r0   rz   r   )ry   r   ry   r   r   r   )r   r   r   ry   r   r   r   r   s      r   test_uniformzTestLBP.test_uniform(  s    "4:q!Y??h""""""""""""""""""	
 	
 	
%%c3/////r   c                    t           j                            d           t           j                            dd          }d}||                                z  |z  }d\  }}d}t          |g          5  t          |||d          }d d d            n# 1 swxY w Y   |ddddf         }|d	z  |d
z
  z  |z  }t           j                            |	                                |d           d S )Ni i  g333333?)r   r   r   varrz   r   r   r   )
r   r}   seedrandr   r   r   r$   rc   r   )r   r   
target_stdPRr   r   r1   s           r   test_varzTestLBP.test_var6  s+    		x    	sC((
		#j0 1Hu%% 	; 	;&uaE::C	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; 	; !B$"*o q=AE*Q.

&&sxxzz8Q?????s   3BBBc           	          t          | j        ddd          }t          j        g dg dg dg dg dg d	g          }t          j                            ||           d S )
Nry   r   nri_uniform)r   6   r   9   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$   assert_array_almost_equalr   s      r   test_nri_uniformzTestLBP.test_nri_uniformO  s    "4:q!]CCh&&&&&&'''&&&&&&%%%	
 	
 	
,,S#66666r   N)r   r   r   r   r   r   r   r:   markparametrizer   r7   r8   r9   r   r   r   r   r   r   r   r   r      s        
 
 
 _0 0 00 0 0 [Wrz2:rz&JKK0 0 LK0"0 0 0@ @ @27 7 7 7 7r   r   c                       e Zd Zd ZdS )	TestMBLBPc                     t          j        dd          }d|ddddf<   d|d dd df<   d|dd dd f<   d}t          |          }t          |d	d	dd          }t           j                            ||           d S )
N)r   r   r   r   r   r   r0   r      r   )r   rU   r	   r   r$   assert_equal)r   test_imgcorrect_answerint_imglbp_codes        r   test_single_mblbpzTestMBLBP.test_single_mblbp_  s     8F'2221ac!RaRQRR $ **!'1aA66

.99999r   N)r   r   r   r  r   r   r   r  r  ^  s#        : : : : :r   r  )numpyr   r:   skimage._shared.testingr   r   skimage.featurer   r   r   r   skimage.transformr	   r   r   r  r   r   r   <module>r     s        F F F F F F F F            - , , , , ,Z& Z& Z& Z& Z& Z& Z& Z&zp7 p7 p7 p7 p7 p7 p7 p7f: : : : : : : : : :r   