找回密码
 立即注册
查看: 798|回复: 1

【DE_RGBSHIT】用于mpv的反rgb位移的vs脚本

7

主题

78

回帖

0

VC币

注册会员

Rank: 2

积分
890
zdrzdr 发表于 2025-4-8 12:22:46 | 显示全部楼层 |阅读模式
为什么要做这个东西就不赘述了,和ai合作写了这个东西,能一定程度反制rgbshift滤镜。
性能问题大概不会很多,如果有代码上的问题欢迎指正。

  1. import vapoursynth as vs
  2. from vapoursynth import core

  3. core = vs.core
  4. clip = video_in

  5. # ====== 配置参数 ======
  6. SHIFT_X = -1.0    # 水平位移量(正数=右移)
  7. SHIFT_Y = -0.5    # 垂直位移量(正数=下移,负数=上移)

  8. # ====== RGB处理流程 ======
  9. # 转换为 RGB 格式(假设输入为 BT.709)
  10. rgb = core.resize.Bilinear(
  11.     clip,
  12.     format=vs.RGBS,
  13.     matrix_in_s="709" if clip.format.color_family == vs.YUV else "rgb"
  14. )

  15. # 分离 RGB 通道
  16. r, g, b = core.std.SplitPlanes(rgb)

  17. # ====== 蓝色通道位移处理 ======
  18. # 水平+垂直联合位移
  19. shifted_b = core.resize.Bilinear(
  20.     b,
  21.     src_left   = -SHIFT_X,          # 右移1像素(负值=向右采样)
  22.     src_top    = -abs(SHIFT_Y),     # 上移0.5像素(负值=向上采样)
  23.     src_width  = b.width + SHIFT_X, # 扩展采样区域
  24.     src_height = b.height + abs(SHIFT_Y),
  25.     width      = b.width,           # 输出尺寸不变
  26.     height     = b.height,
  27.     filter_param_a=0, filter_param_b=0.5  # 最近邻插值
  28. )

  29. # ====== 重组通道 ======
  30. shifted_clip = core.std.ShufflePlanes(
  31.     clips=[r, g, shifted_b],
  32.     planes=[0, 0, 0],
  33.     colorfamily=vs.RGB
  34. )

  35. # ====== 转回YUV格式 ======
  36. yuv_clip = core.resize.Bicubic(
  37.     shifted_clip,
  38.     format=vs.YUV420P10,
  39.     matrix_s="709",
  40.     dither_type="error_diffusion"
  41. )

  42. yuv_clip.set_output()
复制代码



回复

使用道具 举报

47

主题

2781

回帖

2020

VC币

星辰大海

Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20

积分
432683

崭露头角活跃达人CD!BD!坚持不懈灌水之王日积月累

孤雨独火 发表于 2025-6-29 19:10:24 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表