+
    Ai                     N    ^ RI t^ RIt^ RIHt ]! RRRR7      R 4       tRR ltR# )	    N)njitz>void(f8[:, :, :], f8, i8, f8[:, :, :], i8[:], i8[:], b1[:, :])T)cachenogilc                    V P                   w  rxp	V	^8X  g   Q h^V,          ^,           p
W,          p\        V4       F  p\        V4       F  pWV,          ,           pV^V,          ^,           ^,          ,          p\        V^V,          ,
          V^V,          ,           ^,           4       Fz  p\        V^V,          ,
          V^V,          ,           ^,           4       FD  pVVV,          ,           p^ Tu;8:  d   V8  d   M M^ Tu;8:  d   V8  d   M MVWO&   V^,          pKF  	  K|  	  WV^,           &   K  	  K  	  \        P                  ! ^V,          ^,           ^V,          ^,           ^34      p\        W'V,
          4       EF  p\        W(V,
          4       EF  p\        P                  ! VVV,
          VV,           ^,           1VV,
          VV,           ^,           13,          4      '       d   KY  \        ^4       F  pRp\        V
4       FD  p\        V
4       F2  pVV VV,           V,
          VV,           V,
          V3,          ,          pK4  	  KF  	  \        ^V,          ^,           4       F_  p\        ^V,          ^,           4       F?  pV VV,           V,
          VV,           V,
          V3,          VV,          ,
          VVVV3&   KA  	  Ka  	  K  	  TpRpRpTpRpTp\        V
4       F  p\        V
4       F  pVVVV^ 3,          VVV^ 3,          ,          ,          pVVVV^ 3,          VVV^3,          ,          ,          pVVVV^ 3,          VVV^3,          ,          ,          pVVVV^3,          VVV^3,          ,          ,          pVVVV^3,          VVV^3,          ,          ,          pVVVV^3,          VVV^3,          ,          ,          pK  	  K  	  VV,          pVV,          pVV,          pVV,          pVV,          pVV,          pVV,          V,          VV,          V,          ,           VV,          V,          ,           VV,          V,          ,
          ^V,          V,          V,          ,
          p RV ,          p!VV,          VV,          ,
          V!,          p"VV,          VV,          ,
          V!,          p#VV,          VV,          ,
          V!,          p$VV,          VV,          ,
          V!,          p%VV,          VV,          ,
          V!,          p&VV,          VV,          ,
          V!,          p'\        ^V,          ^,           4       EF  p(\        ^V,          ^,           4       EF  p)VV(V)^ 3,          pVV(V)^3,          p*VV(V)^3,          p+V"V,          V#V*,          ,           V$V+,          ,           p,V#V,          V%V*,          ,           V&V+,          ,           p-V$V,          V&V*,          ,           V'V+,          ,           p.\        ^V,          ^,           4       EF-  p/\        ^V,          ^,           4       EF  p0VV),           V,
          pVV(,           V,
          pVV0,           V,
          pVV/,           V,
          pWV,          ,           pVVV,          ,           pV,VV/V0^ 3,          ,          V-VV/V0^3,          ,          ,           V.VV/V0^3,          ,          ,           p1VV8X  d   RMR^V1,           V,          ,
          p2VV,
          ^V,          ,           pVV,
          ^V,          ,           pW>VV3;;,          V2,          uu&   EK  	  EK0  	  EK  	  EK  	  EK  	  EK  	  R# )   g        g      ?N)shaperangenpzerosall)3imageepsilonrvaluesindicesindptris_knownhwdsizewindow_areayixiikyjxjjcyxdcsdydxa00a01a02a11a12a22detinv_detm00m01m02m11m12m22dyidxituc0c1c2dyjdxjtempvalues3   &&&&&&&                                            ^/var/www/html/photoedit/myenv/lib/python3.14/site-packages/pymatting/laplacian/cf_laplacian.py_cf_laplacianrA      sH   kkGA!6M6q519D+KAh(B!VAQUQY1$$ABQJQU
Q7QU
BQJN;BR!VAB{{qB{{%&
FA < 8 1q5M    	!a%!)QUQY*+A 1!e_qa%Avvhq1uq1uqy0!a%!a%!)2CCDEE Ah+B#DkU1r6A:q2vz2#=>> * &
  A	*B#AEAI.!!b&1*a"fqj""<=KO "b"* / +  CCCCCCDk+B1RQY<!BAI,66C1RQY<!BAI,66C1RQY<!BAI,66C1RQY<!BAI,66C1RQY<!BAI,66C1RQY<!BAI,66C & " ;C;C;C;C;C;C c	C)c/")c/" )c/" c'C-#%	&  CiG 9sSy(G3C9sSy(G3C9sSy(G3C9sSy(G3C9sSy(G3C9sSy(G3C QUQY' Q+C#sA+A#sA+A#sA+Aq37*S1W4Bq37*S1W4Bq37*S1W4B$QUQY/#(Q#3C!"S1B!"S1B!"S1B!"S1B "!VA "R!VA !#QsC{^ 3"$qc1~"5!6"$qc1~"5!6 ! ./!VS# !D +B, %,E "$b1q5B!#b1q5B"b"9-6-/ $4  0 , ( !     c           	        V P                   w  rEpWE,          pVf(   \        P                  ! WE3\        P                  R7      pVP	                  WE4      p\        P                  ! V^,           \        P
                  R7      p\        P                  ! V^V,          ^,           ^,          ,          \        P
                  R7      p	\        P                  ! V^V,          ^,           ^V,          ^,           3\        P                  R7      p
\        WW*WV4       \        P                  P                  V
P                  4       W3Ww34      pV# )a  
This function implements the alpha estimator for closed-form alpha matting
as proposed by :cite:`levin2007closed`.

Parameters
----------
image: numpy.ndarray
   Image with shape :math:`h\times w \times 3`
epsilon: float
   Regularization strength, defaults to :math:`10^{-7}`. Strong
   regularization improves convergence but results in smoother alpha mattes.
radius: int
   Radius of local window size, defaults to :math:`1`, i.e. only adjacent
   pixels are considered.
   The size of the local window is given as :math:`(2 r + 1)^2`, where
   :math:`r` denotes         the radius. A larger radius might lead to
   violated color line constraints, but also
   favors further propagation of information within the image.
is_known: numpy.ndarray
    Binary mask of pixels for which to compute the laplacian matrix.
    Laplacian entries for known pixels will have undefined values.

Returns
-------
L: scipy.sparse.spmatrix
    Matting Laplacian
)dtype)r   r
   r   bool_reshapeint64float64rA   scipysparse
csr_matrixravel)r   r   radiusr   r   r   r   nr   r   r   Ls   &&&&        r@   cf_laplacianrP      s    8 kkGA!	A88QF"((3%H XXa!e288,FhhqAJNq00AGXXq!f*q.!f*q.9LF%&'8L AA6JAHrB   )gHz>   N)numpyr
   scipy.sparserI   numbar   rA   rP    rB   r@   <module>rV      s4      FdZ^_{7 `{7|-rB   