CoolFace
Apppublic

hololens/stable-diffusion-webui-depthmap-script

sourceHugging Faceupdated 2y agoView on Hugging Face
1likes
stereoimage_generation.cpython-312.pyc109 linesDownload Raw Back to __pycache__
12��f8?�	��	ddlmZmZddl	Z3ddlmZ		dd	�Z
d4�Zed��ded
ededefd��Zed��ded
ededefd��Zed��d��Zy#e$r&Zedee��d��ddlmZdd�ZYdZ[�ydZ[wwxYw)�)�njit�prangezOWARINING! Numba failed to import! Stereoimage generation will be much slower! (�))�rangeFc��d�}|S)Nc����fd�S)Nc����|i|��S)N�)�args�kwargs�funcs  ��RF:\3dpicmaker\stable-diffusion-webui-depthmap-script\src\stereoimage_generation.py�<lambda>z%njit.<locals>.Inner.<locals>.<lambda>s����d�8M�f�8M��r5)r
s`r�Innerznjit.<locals>.Inners	��� M�Mrr6)�parallelrs  rrrs7��M��rN)�Imagec���|�dg}t|t�s|g}t|�dk(rgStj|�}|dzdz}|dkr|nt||d|z|zd|z||�}	|dkDr|nt||d|zd|z8z|||�}9g}|D�].}|dk(r'|j
tj|	|10g���0|dk(r'|j
tj|11|	g���\|d	k(r'|j
tj|	|12g����|d13k(r'|j
tj|14|	g����|dk(r|j
t|	|15����|dk(r|j
|	���|d
k(r|j
|16���|dk(r|j
t|17|	����&td��|D�
cgc]}
tj|
���c}
Scc}
w)a�Creates stereoscopic images.18    An effort is made to make them look nice, but beware that the resulting image will have some distortion.19    The correctness was not rigorously tested.20 21    :param original_image: original image from which the 3D image (stereoimage) will be created22    :param depthmap: depthmap corresponding to the original image. White = near, black = far.23    :param float divergence: the measure of 3D effect, in percentages.24      A good value will likely be somewhere in the [0.05; 10.0) interval.25    :param float separation: measure by how much to move two halves of the stereoimage apart from each-other.26      Measured in percentages. Negative values move two parts closer together.27      Affects which parts of the image will be visible in left and/or right half.28    :param list modes: how the result will look like. By default only 'left-right' is generated29      - a picture for the left eye will be on the left and the picture from the right eye - on the right.30      Some of the supported modes are: 'left-right', 'right-left', 'top-bottom', 'bottom-top', 'red-cyan-anaglyph'.31    :param float stereo_balance: has to do with how the divergence will be split among the two parts of the image,32      must be in the [-1.0; 1.0] interval.33    :param float stereo_offset_exponent: Higher values move objects residing34      between close and far plane more to the far plane35    :param str fill_technique: applying divergence inevitably creates some gaps in the image.36      This parameter specifies the technique that will be used to fill in the blanks in the two resulting images.37      Must be one of the following: 'none', 'naive', 'naive_interpolating', 'polylines_soft', 'polylines_sharp'.38    z39left-rightr��g����MbP?�����g+�����?z40right-leftz41top-bottomz42bottom-topzred-cyan-anaglyphz	left-onlyz43only-rightzcyan-red-reverseanaglyphzUnknown mode)
�44isinstance�list�len�np�asarray�apply_stereo_divergence�append�hstack�vstack�overlap_red_cyan�	Exceptionr�	fromarray)�original_image�depthmap�45divergence�46separation�modes�stereo_balance�stereo_offset_exponent�fill_technique�balance�left_eye�	right_eye�results�mode�rs              r�create_stereoimagesr2
s���0
�}�����e�T�"����47�5�z�Q���	��Z�Z��/�N���!�Q�&�G�!(�5��~����"�z�/�G�:S�UW�Zd�Ud� 6��	H�
�#*�E�/�����"�z�/�Q�QX�[�:Y�[e� 6��	H���G��,���<���N�N�2�9�9�h�	�%:�;�<�
�\�
!��N�N�2�9�9�i��%:�;�<�
�\�
!��N�N�2�9�9�h�	�%:�;�<�
�\�
!��N�N�2�9�9�i��%:�;�<�
�(�
(��N�N�+�H�i�@�A�
�[�
 ��N�N�8�$�
�\�
!��N�N�9�%�
�/�
/��N�N�+�I�x�@�A��N�+�+�',�()0�0�1�E�O�O�A��0�0��0s�Gc�D�|jdd|jk(sJd��|j�}|j�}||z48||z49z}|dz|jdz}	|dz|jdz}50|dvrt|||	|51||�S|dvrt	|||	|52||�Sy)Nrz.Depthmap and the image must have the same sizegY@r)�none�naive�naive_interpolating)�polylines_soft�polylines_sharp)�shape�min�max�apply_stereo_divergence_naive�!apply_stereo_divergence_polylines)r$�depthr&r'r*r+�	depth_min�	depth_max�normalized_depth�
divergence_px�
separation_pxs           rrrMs��������#�u�{�{�2�d�4d�d��	�	��I��	�	��I��	�)�i�)�.C�D���%�'�>�+?�+?��+B�B�M��%�'�>�+?�+?��+B�B�M��A�A�,��,�m�]�Lb�dr�53�	54��>�>�0��,�m�]�Lb�dr�55�	56�?r)rrBrCr*r+c	���|j\}}}tj|�}	tj||ztj��}57t|�D]l}|dkrt
|�nt
|dz58dd�D]G}|t||||z|z|z�z}
d|
cxkr|ks�,n�/||||	||
<d|59||z|
z<�I�n|dk(�rmt
|�D�]\}t
|�D�]J}t|	||�dk7s|60||z|zr�$|dkDr|	||dz61n$tjdtj��}tjdtj��}|dz}||kr3t|	||�dk7r|62||z|zr	|	||}n|dz
}||kr�3t|�dk(r|}nt|�dk(r|}d|z|z63}|jtj�|z64|z}t
||�D]3}||||z65dzzjtj�z|	||<�5��M��_|	S|dk(r�tj|	�}tj|66dk(�dD]|}||z}||z}||z}t
dtt|��dz�D]G}||z}||z67}||kr|68||zr|	|||||<�]d|ks�0|69||zs�9|	|||||<�|�~|S|	S)	N��dtyperrrr6�r5r)r9r�70zeros_like�zeros�uint8rr�int�sum�astype�float_�copy�where�abs)r$rArBrCr*r+�h�w�c�
derived_image�filled�row�col�col_d�	l_pointer�l_border�r_border�	r_pointer�total_steps�step�derived_fix�pos�row_times_w�offset�r_offset�l_offsets                          rr<r<_sv���"�"�G�A�q�!��M�M�.�1�M�
�X�X�a�!�e�2�8�8�
,�F��a�y�,�� -�q�0�5��8�e�A��E�2�r�6J�	,�C��#�/��4�S�9�=S�S�Wd�d�gt�t�u�u�E��E�~�A�~�,:�3�,?��,D�
�c�"�5�)�*+��s�Q�w���'�		,�,��.�.���8�	i�C�"�1�X�
i�	��}�S�)�)�4�5��:�f�S�1�W�y�EX�>Y��@I�A�
�=��-�i�!�m�<�SU�S[�S[�\]�eg�em�em�Sn���8�8�A�R�X�X�6��%��M�	��!�m��=��-�i�8�9�Q�>�6�#�PQ�'�T]�J]�C^�#0��#5�i�#@�����N�I�	 �!�m�71�x�=�A�%�'�H���]�a�'�'�H� �)�m�i�7�� ����	�	�2�X�=��L�� ��I�6�i�C�.6�$�#�	�/�TU�BU�:V�9^�9^�_a�_g�_g�9h�.h�M�#�&�s�+�i�/
i�	i�4��	�7�	"��g�g�m�,���8�8�F�a�K�(��+�	�C���(�C���'�C���'�K���3�s�=�'9�#:�Q�#>�?�
����<����<���a�<�F�;��+A�$B�,9�#�,>�x�,H�K��$�S�)����=�V�K�(�,B�%C�,9�#�,>�x�,H�K��$�S�)��
�		����rTc�Z	�d}|dk(rdnd}|j\}}	}72tj|�}t|�D�]k}tjdd|	zzdftj73��}
d	}d74|	zddg|
|<|dz
}t
d	|	�D]g}||||z|z}|dz|z|z}||kr|t|�|g|
|<|dz
}�8||z75t|�|g|
|<||zt|�|g|
|dz<|dz
}�id
|	zd|	dz76g|
|<|dz
}|dz77}tj|dftj78��}t
|�D]-}||xxtj|
||
|dzf�z
cc<�/t
d|�D]�}|dz79}|
|d	|
|dzd	kDs�d	|ks�#tj|
|dz�tj|
|�c|
|<|
|dz<tj||dz�tj||�c||<||dz<|dz}|
|d	|
|dzd	kDs��d	|kr����tjdtt|��zdzdftj80��}d	}d	}d	}t
|	�D�]}tj|81dtj82��}|
|d	|kr|dz
}|
|d	|kr�|dz}|
|d	|dzk�r�t||
|d	�|z}t|dz|
|dzd	�|z83}||z84}|d|zz}||kr.||d	|kr#||||<|dz
}|dz
}||kr||d	|kr�#d	}||kr'||d|kr||dz85||<|dz}n|dz
}||kr�'d	} |dk7rc|}!t
|�D]R}|||d	z86||d||d	z87z}"d|"z88||dz|"||dzz}#|!|#ks�@d|"cxkrdks�Ln�O|#}!|} �Tt|| d|z�}$t|| d|z�}%|$|%k(r||||$|zz
}n=||| d	z89|| d|| d	z90z}"||||$d|"z91z|||%|"zz|zz
}|dz
}|
|d	|dzkr���tj|tj��|||<����n|S)NgH�����z>r8g�������?��rrGrErg�rg�?g@����?�)r9rrHrrIrNrrQ�concatenaterOrK�fullr;r:rrJ)&r$rArBrCr*r+�EPSILON�PIXEL_HALF_WIDTHrRrSrTrUrW�pt�pt_endrX�coord_d�coord_x�sg_end�sg�i�u�csg�csg_end�92sg_pointer�pt_i�color�93coord_from�coord_to�significance�coord_center�csg_i�94best_csg_i�best_csg_closeness�ip_k�	closeness�col_l�col_rs&                                      rr=r=�s����G�-�1B�B�t����"�"�G�A�q�!��M�M�.�1�M��a�y�kH���X�X�q�1�q�5�y�!�n�B�I�I�
6�����Q�h��S�)��6�95��!�����A�;�		�C�'��,�S�1�5K�K�}�\�G��C�i�'�)�M�9�G��'�)�%�s�7�|�S�9��6�96��!���%�(8�8�#�g�,��L��6�97�")�,<�"<�c�'�l�C�!P��6�A�:���!���		��A�g�s�A��E�*��6�98��!����q�j��
�X�X�v�q�k����
3���v��	8�A��q�E�R�^�^�R��U�B�q�1�u�I�$6�7�7�E�	8� �q�&�!�	�A��A��A��Q�%��(�R��A��Y�q�\�)�a�1�f�#%�7�7�2�a�!�e�9�#5�r�w�w�r�!�u�~� ��1��r�!�a�%�y�#%�7�7�2�a�!�e�9�#5�r�w�w�r�!�u�~� ��1��r�!�a�%�y��Q����Q�%��(�R��A��Y�q�\�)�a�1�f�	��h�h��C��M� 2�3�3�b�8�!�<�B�I�I�N�����99�����8�5	H�C��G�G�A�s�"�)�)�4�E��T�(�1�+��#���	���T�(�1�+��#��A�I�D��T�(�1�+��a��'� ��b��h�q�k�2�W�<�100��s�Q�w��4�!�8��Q��8�7�B��'�*�4��)�C�,�,>�>��!�6�)�b��n�Q�.?�,�.N�#%�j�>�C��L��!�O�J��q�L�G�!�6�)�b��n�Q�.?�,�.N�101���g�o��5�z�!�}�|�3�%(��1��%5��E�102��1�����103���g�o�#$�104��a�<�18��&�!&�w��/�� ,�s�5�z�!�}� <��U��A��QT�UZ�Q[�\]�Q^�A^�_��%(�4�Z�3�u�:�a�=�$@�4�#�e�*�UV�-�CW�$W�	�-�	�9�c�D�>N�3�>N�1:�.�).�J�
/�!��Z���!3�g�!=�>�� ��Z���!3�g�!=�>���E�>��^�C�0��7�,�F�F�E�)�3�z�?�1�+=�=�#�j�/�RS�BT�WZ�[e�Wf�gh�Wi�Bi�j�D��n�S�1�%�8�C�$�J�G�,�S�1�%�8�4�?�@�".�/�/�E���	��]�T�(�1�+��a��'�^')�j�j��b�h�h�&G�M�#��s�#�k5	H�mkH�Z�rc��|jd}|jd}|jd}|jd}tj||dftj�}t	|�D] }t|�D]}|||df|||df<��"t	|�D].}t|�D]}|||df|||df<|||df|||df<� �0|S)NrrrGr)r9rrIrJrr)	�im1�im2�width1�height1�width2�height2�	compositerw�js	         rr!r!s���
�Y�Y�q�\�F��i�i��l�G�
�Y�Y�q�\�F��i�i��l�G����'�6�1�-�r�x�x�8�I��G�_�.���v��	.�A�!$�Q��1�W��I�a��A�g��	.�.�105�G�_�.���v��	.�A�!$�Q��1�W��I�a��A�g��!$�Q��1�W��I�a��A�g��	.�.�106�r)F)rgNrgrkr8)�numbarrr"�e�print�str�builtinsr�numpyr�PILrr2r�floatr<r=r!r107rr�<module>r�s����"���UY�Wh�=1�@108�$�u��?�9>�?�OT�?�ns�?��?��?�D�t��x�9>�x�OT�x�ns�x��x��x�v�t������y��	�[�\_�`a�\b�[c�cd�109e�f�(�����s�A�B�"B�B