+
    Ai^                         ^ RI Ht ^ RI t ^ RIt^ RIHtHt ^ RIHt ^RI	H
t
 ]
'       g   ^ RIHt M^ RIHt  ! R R	]4      tR
 tRR ltRR ltRRR/R lltR# )    )combinations_with_replacementN)filtersfeature)img_as_float32)is_wasm)ThreadPoolExecutor)AbstractContextManagerc                   2   a  ] tR t^t o R tR tR tRtV tR# )PoolExecutorc                    R # N )self___s   &*,]/var/www/html/photoedit/myenv/lib/python3.14/site-packages/skimage/feature/_basic_features.py__init__PoolExecutor.__init__           c                    R # r   r   )r   exc_typeexc_valexc_tbs   &&&&r   __exit__PoolExecutor.__exit__   r   r   c                    \        W4      # r   )map)r   fn	iterabless   &&&r   r   PoolExecutor.map   s    r%%r   r   N)	__name__
__module____qualname____firstlineno__r   r   r   __static_attributes____classdictcell__)__classdict__s   @r   r   r      s     			& 	&r   r   c           	         \        \        V P                  4      ^4       UUu. uF8  w  r\        P                  ! \        P                  ! V 4      V,          VR7      NK:  	  ppp\
        P                  ! V4      pV# u uppi )   axis)r   rangendimnpgradientr   hessian_matrix_eigvals)gaussian_filteredax0ax1H_elemseigvalss   &    r   _texture_filterr7      sp     6e<M<R<R6SUVWWHC 	BKK 1237cBW   ,,W5GNs   >A<c                     Rp\         P                  ! WR R7      pV'       d
   WV3,          pV'       d   V\         P                  ! V4      3,          pV'       d   V. \        V4      O5,          pV# )F)sigmapreserve_ranger   )r   gaussiansobelr7   )imgr9   	intensityedgestextureresultsr2   s   &&&&&  r   )_singlescale_basic_features_singlechannelrB   "   sb     G((%P''GMM"34669_%6799Nr   c           
     >  a aaa \         P                  ! \        S 4      4      o VfB   \        \         P                  ! V4      \         P                  ! V4      ,
          ^,           4      p\         P
                  ! \         P                  ! V4      \         P                  ! V4      V^RR7      p\        VR7      ;_uu_ 4       p	\        V	P                  VV VV3R lV4      4      p
RRR4       \        P                  P                  X
4      pV#   + '       g   i     L1; i)a  Features for a single channel nd image.

Parameters
----------
img : ndarray
    Input image, which can be grayscale or multichannel.
intensity : bool, default True
    If True, pixel intensities averaged over the different scales
    are added to the feature set.
edges : bool, default True
    If True, intensities of local gradients averaged over the different
    scales are added to the feature set.
texture : bool, default True
    If True, eigenvalues of the Hessian matrix after Gaussian blurring
    at different scales are added to the feature set.
sigma_min : float, optional
    Smallest value of the Gaussian kernel used to average local
    neighborhoods before extracting features.
sigma_max : float, optional
    Largest value of the Gaussian kernel used to average local
    neighborhoods before extracting features.
num_sigma : int, optional
    Number of values of the Gaussian kernel between sigma_min and sigma_max.
    If None, sigma_min multiplied by powers of 2 are used.
workers : int or None, optional
    The number of parallel threads to use. If set to ``None``, the full
    set of available cores are used.

Returns
-------
features : list
    List of features, each element of the list is an array of shape as img.
NT)numbaseendpoint)max_workersc                 $   < \        SV SSSR 7      # ))r>   r?   r@   )rB   )sr?   r=   r>   r@   s   &r   <lambda>9_mutiscale_basic_features_singlechannel.<locals>.<lambda>i   s    Ciugr   )r/   ascontiguousarrayr   intlog2logspacer   listr   	itertoolschainfrom_iterable)r=   r>   r?   r@   	sigma_min	sigma_max	num_sigmaworkerssigmasex
out_sigmasfeaturess   ffff&&&&    r   '_mutiscale_basic_features_singlechannelr\   0   s    X 

~c2
3C	*RWWY-??!CD	[[
	
	F 
'	*	*bFF 	

 
+ ,,Z8HO 
+	*s    #DD	channel_axisc                 a aaaaaaa \        SSS.4      '       g   \        R4      hVf   S R\        P                  3,          o RpMVR8w  d   \        P                  ! S VR4      o VV VVVVVV3R l\        S P                  R,          4       4       p	\        \        P                  P                  V	4      4      p
\        P                  ! V
RR7      pV# )a  Local features for a single- or multi-channel nd image.

Intensity, gradient intensity and local structure are computed at
different scales thanks to Gaussian blurring.

Parameters
----------
image : ndarray
    Input image, which can be grayscale or multichannel.
intensity : bool, default True
    If True, pixel intensities averaged over the different scales
    are added to the feature set.
edges : bool, default True
    If True, intensities of local gradients averaged over the different
    scales are added to the feature set.
texture : bool, default True
    If True, eigenvalues of the Hessian matrix after Gaussian blurring
    at different scales are added to the feature set.
sigma_min : float, optional
    Smallest value of the Gaussian kernel used to average local
    neighborhoods before extracting features.
sigma_max : float, optional
    Largest value of the Gaussian kernel used to average local
    neighborhoods before extracting features.
num_sigma : int, optional
    Number of values of the Gaussian kernel between sigma_min and sigma_max.
    If None, sigma_min multiplied by powers of 2 are used.
workers : int or None, optional
    The number of parallel threads to use. If set to ``None``, the full
    set of available cores are used.
channel_axis : int or None, optional
    If None, the image is assumed to be a grayscale (single channel) image.
    Otherwise, this parameter indicates which axis of the array corresponds
    to channels.

    .. versionadded:: 0.19
       ``channel_axis`` was added in 0.19.

Returns
-------
features : np.ndarray
    Array of shape ``image.shape + (n_features,)``. When `channel_axis` is
    not None, all channels are concatenated along the features dimension.
    (i.e. ``n_features == n_features_singlechannel * n_channels``)
z[At least one of `intensity`, `edges` or `textures`must be True for features to be computed..c              3   \   <"   T F!  p\        SR V3,          SSSSSSS	R7      x  K#  	  R# 5i).)r>   r?   r@   rT   rU   rV   rW   N)r\   )
.0dimr?   imager>   rV   rU   rT   r@   rW   s
   & r   	<genexpr>,multiscale_basic_features.<locals>.<genexpr>   sF       *C 	0#s(O		
 		
 *s   ),r+   )any
ValueErrorr/   newaxismoveaxisr-   shaperP   rQ   rR   rS   stack)rb   r>   r?   r@   rT   rU   rV   rW   r]   all_resultsr[   outs   ffffffff$   r   multiscale_basic_featuresrn   s   s    r 	5'*++8
 	
 c2::o&		E<4  R)K IOO11+>?H
((8"
%CJr   )TTT)TTTg      ?   NN)rQ   r   numpyr/   skimager   r   skimage.util.dtyper   _shared._dependency_checksr   concurrent.futuresr   r   
contextlibr	   r7   rB   r\   rn   r   r   r   <module>rv      sO    3   $ - 0E1&- &@FS Sr   