/// <summary> /// Set the border of an image volume to a specific value. /// </summary> public static void SetBorder <T>(this Volume <T> volume, Border2l border, T value) { volume.ApplyCenterBordersAndCorners(border, v => { }, v => v.Set(value), v => v.Set(value), v => v.Set(value), v => v.Set(value), v => v.Set(value), v => v.Set(value), v => v.Set(value), v => v.Set(value)); }
/// <summary> /// Replicate the border pixels of the center region outward. /// </summary> public static void ReplicateBorder <T>(this Volume <T> volume, Border2l border) { volume.ApplyCenterBordersAndCorners(border, v => { }, v => v.SetByCoord(z => false, (z, y, vz) => v[v.EX, y, z], (z, y, x, vz, vy) => vy), v => v.SetByCoord(z => false, (z, y, vz) => v[v.FX - 1, y, z], (z, y, x, vz, vy) => vy), v => { var tv = v.SubVolumeWindow(v.F, v.S.YXZ, v.D.YXZ, v.F.YXZ); tv.SetByCoord(z => false, (z, y, vz) => tv[tv.EX, y, z], (z, y, x, vz, vy) => vy); }, v => { var tv = v.SubVolumeWindow(v.F, v.S.YXZ, v.D.YXZ, v.F.YXZ); tv.SetByCoord(z => false, (z, y, vz) => tv[tv.FX - 1, y, z], (z, y, x, vz, vy) => vy); }, v => v.SetByCoord(z => v[v.EX, v.EY, z], (z, y, vz) => false, (z, y, x, vz, vy) => vz), v => v.SetByCoord(z => v[v.FX - 1, v.EY, z], (z, y, vz) => false, (z, y, x, vz, vy) => vz), v => v.SetByCoord(z => v[v.EX, v.FY - 1, z], (z, y, vz) => false, (z, y, x, vz, vy) => vz), v => v.SetByCoord(z => v[v.FX - 1, v.FY - 1, z], (z, y, vz) => false, (z, y, x, vz, vy) => vz)); }