跳到內容

資料模糊化

針對 1D、2D 和 RGBA 影像的 方框模糊 實作;支援小數半徑。

blur(data, radius)

js
const numbers = d3.cumsum({length: 1000}, () => Math.random() - 0.5);
d3.blur(numbers, 5); // a smoothed random walk

範例 · 原始碼 · 原地模糊化 data 陣列,針對給定的 radius(非負數)套用三次回合的移動平均轉換(方框濾波器),以快速近似給定的高斯核。傳回給定的 data

blur2({data, width, height}, rx, ry)

js
const matrix = {
  width: 4,
  height: 3,
  data: [
    1, 0, 0, 0,
    0, 0, 0, 0,
    0, 0, 0, 1
  ]
};

d3.blur2(matrix, 1);

範例 · 原始碼 · 原地模糊給定寬度高度的矩陣,方法是套用半徑為rx的水平模糊和半徑為ry(預設為rx)的垂直模糊。矩陣值資料儲存在平面(一維)陣列中。如果未指定高度,則會從給定的寬度資料長度推論。傳回模糊的矩陣 {資料, 寬度, 高度}。

blurImage(影像資料, rx, ry)

js
const imageData = context.getImageData(0, 0, width, height);
d3.blurImage(imageData, 5);

範例 · 原始碼 · 原地模糊給定的影像資料,方法是獨立模糊每個 RGBA 圖層,套用半徑為rx的水平模糊和半徑為ry(預設為rx)的垂直模糊。傳回模糊的影像資料。