diff --git a/Bishounen Tanteidan/tanteidan_common/filter.py b/Bishounen Tanteidan/tanteidan_common/filter.py
index f8c3a59..71b6fde 100644
--- a/Bishounen Tanteidan/tanteidan_common/filter.py	
+++ b/Bishounen Tanteidan/tanteidan_common/filter.py	
@@ -10,10 +10,9 @@ from lvsfunc.kernels import Bicubic
 from lvsfunc.mask import detail_mask
 from lvsfunc.misc import replace_ranges
 from lvsfunc.types import Range
-from mvsfunc import BM3D
 from vardefunc import dumb3kdb
 
-from typing import List, Optional, Sequence, Union
+from typing import List, Optional
 
 from yt_common.antialiasing import combine_mask, sraa_clamp
 from yt_common.deband import morpho_mask
@@ -24,9 +23,8 @@ from .scenefilter import get_op_scenefilters
 core = vs.core
 
 
-def denoise(clip: vs.VideoNode, sigma: Union[float, Sequence[float]] = 0.75) -> vs.VideoNode:
-    den: vs.VideoNode = BM3D(clip, sigma=sigma)
-    return den
+def denoise(clip: vs.VideoNode, h: float = 0.4) -> vs.VideoNode:
+    return clip.knlm.KNLMeansCL(d=3, a=1, h=h)
 
 
 def deband(clip: vs.VideoNode) -> vs.VideoNode:
diff --git a/Vivy/vivy_common/filter.py b/Vivy/vivy_common/filter.py
index 5a64b87..fe9f23a 100644
--- a/Vivy/vivy_common/filter.py
+++ b/Vivy/vivy_common/filter.py
@@ -6,7 +6,6 @@ import vardefunc as vdf
 from awsmfunc import bbmod
 from debandshit import f3kbilateral
 from lvsfunc.types import Range
-from mvsfunc import BM3D
 from typing import List, Optional
 
 from yt_common import antialiasing
@@ -40,9 +39,8 @@ def letterbox_edgefix(clip: vs.VideoNode, ranges: List[Range]) -> vs.VideoNode:
     return lvf.misc.replace_ranges(clip, edgefix, ranges)
 
 
-def denoise(clip: vs.VideoNode, sigma: float = 1.5) -> vs.VideoNode:
-    bm3d: vs.VideoNode = BM3D(clip, sigma=sigma, depth=16)
-    return bm3d
+def denoise(clip: vs.VideoNode, h: float = 0.4) -> vs.VideoNode:
+    return clip.knlm.KNLMeansCL(d=3, a=1, h=h)
 
 
 def deband(clip: vs.VideoNode) -> vs.VideoNode: