欢迎合作和优化此仓库! 除毛 头发检测 在CUDA中实施脱毛。 毛发检测方法参考论文[1] [2]。 三种版本的头发检测分别具有其性能。 染发 要求 的OpenCV 4.2.0 CUDA 10.2 演示版 图像 面具 结果 参考 [1] Pathan, S., Prabhu, K. & Siddalingaswamy, P.C. Hair detection and lesion segmentation in dermoscopic images using domain knowledge. Med Biol Eng Comput 56, 2051–2065 (2018). https://doi.org/10.1007/s11517-018-1837-9 [2] Adie, Heronimus Tresy Renata, and Ignatius Aldi
2022-03-06 12:49:47 2.83MB Cuda
1
头发分割源码。:头发检测(CUDA版本)和头发修复-源码
2022-02-12 11:06:29 2.81MB 头发分割 图像分割 人脸识别
1
我发现了头发有电作文.doc
2022-01-08 09:05:31 21KB 资料
头发的结构和基本成分.pdf
2021-12-23 09:00:09 513KB
1
头发各向异性渲染Shader 这个是04年的一个ppt,主要介绍了头发的渲染,其追到源头还是要看这个原理。 各向异性的主要计算公式: 主要代码如下: 切线混合扰动部分(这部分也可以用T+k*N,来对切线进行扰动): float3x3 tangentTransform = float3x3(i.tangentDir, i.bitangentDir, i.normalDir); float3 _T_var = UnpackNormal(tex2D(_Tangent, TRANSFORM_TEX(i.uv0, _Tangent))); float3 temp = lerp(_TangentParam.xyz, _T_var, _BlenfTangent); float3 T = normalize(mul(float3(temp.xy,0), tangentTransform)); 主要是通过改变切线的xy值来造成头发高光部分的多样性。 高光部分,按公式计算即可: float StrandSpecular(float3 T, float3 V, float3 L, float exponent) { float3 H = normalize(L + V); float dotTH = dot(T, H); float sinTH = sqrt(1 - dotTH*dotTH); float dirAtten = smoothstep(-1, 0, dotTH); return dirAtten*pow(sinTH, exponent); } 注意,为了模拟的更贴近真实性,应用两层高光,第一层高光代表直射光直接反射出去,第二层代表次表面散射现象具体看代码。 最终渲染部分: float4 HairLighting(float3 T, float3 N, float3 L, float3 V, float2 uv, float3 lightColor) { float diffuse = saturate(lerp(0.25, 1.0, dot(N, L)))*lightColor; float3 indirectDiffuse = float3(0, 0, 0); indirectDiffuse += UNITY_LIGHTMODEL_AMBIENT.rgb; // Ambient Light float3 H = normalize(L + V); float LdotH = saturate(dot(L, H)); float3 specular = _Specular*StrandSpecular(T, V, L, exp2(lerp(1, 11, _Gloss))); //float specMask = tex2D(_SpecMask, TRANSFORM_TEX(uv, _SpecMask)); specular += /*specMask*/_SubColor*StrandSpecular(T, V, L, exp2(lerp(1, 11, _ScatterFactor))); float4 final; float4 base = tex2D(_MainTex, TRANSFORM_TEX(uv, _MainTex)); float3 diffuseColor = (_Color.rgb*base.rgb); //float ao = tex2D(_AO, TRANSFORM_TEX(uv, _AO)).g; final.rgb = (diffuse + indirectDiffuse)*diffuseColor + specular*lightColor* FresnelTerm(_Specular, LdotH); //final.rgb *= ao; final.a = base.a; clip(final.a - _CutOff); return final; } 这里我注释掉了AO和高光遮罩,需要的同学可以加上。 最后一点为了不让头发的边经过clip之后太硬,需要进行两个通道的belnd。 第二个pass使用以下指令: Blend SrcAlpha OneMinusSrcAlpha ZWrite Off 注意第二个通道无需再进行clip操作。 至此,头发渲染完毕。
2021-12-11 23:02:48 253KB 头发渲染
1
头发分割,头发颜色变深蓝色(安卓APP)
2021-12-06 17:13:06 15.29MB 头发分割
1
PS头发抠图
2021-11-18 10:00:47 56.76MB PS头发抠图
完美PS扣头发插件,这个比较简单好用,影楼有的很多使用这个。
2021-11-12 17:16:58 19.25MB PS扣头发插件
1
unity 头发 shader 编辑器 超级好用 VertExmotion Pro 1.9.7 适配 unity2019
2021-08-26 12:24:39 69.02MB unity 头发 shader
1
Dynamic Bone(Unity3d动画重定向动力学骨骼插件)是一个Unity的动态骨骼插件,可以用于针对骨骼进行物理模拟,Dynamic Bone使用简单,解压后将Dynamic Bone脚本放到角色上面,然后将Root放到要进行动力学的根骨骼上,再将要进行碰撞的骨骼数组添加Colliders,其他参数设置都比较简单。
2021-08-18 16:08:15 1.59MB 头发 衣服 飘逸 弹性骨骼
1