【问题标题】:iOS and Android Algorithm or library for feathering edges of the images similar to photoshop's用于羽化图像边缘的 iOS 和 Android 算法或库,类似于 Photoshop
【发布时间】:2015-11-28 11:59:09
【问题描述】:

我正在寻找 iOS 和 Android 库(最好)或算法,以帮助我以类似于在 Photoshop 中处理图像的方式羽化图像的边缘。下图显示了算法的预期效果。我对羽化图像的边界不感兴趣,只对 alpha 边缘感兴趣。我一直在寻找可以在没有运气的情况下完成它的算法。任何帮助将不胜感激。

【问题讨论】:

标签: android ios algorithm image-processing


【解决方案1】:

假设您有 alpha 通道(例如在具有透明背景的照片上),似乎常规的卷积模糊矩阵应该满足您的需求。

但是,您应该只通过 ALPHA 通道,而不是通过 RGB 通道。

在此处检查模糊过滤器: https://en.wikipedia.org/wiki/Kernel_%28image_processing%29

您对方框模糊/高斯模糊感兴趣。然而,为了使这种效果更平滑 - 你应该使用更大尺寸的矩阵。

该算法将满足您的需求的原因是,如果所有周围的像素都有 alpha 0 - 它仍然是 0。如果 255 - 它会保持 255。只有 alpha 0/255 之间的边界区域中的像素会受到影响。

编辑:

请用 chrome 检查这个小提琴(在 ff 中真的很慢): http://jsfiddle.net/5L40ms65/

您可以在代码末尾查看算法。自实施以来,我注意到: - 如果所有相邻像素均为 255 或 0(alpha 通道),则无需模糊 - 在其他情况下也需要模糊 RGB

一般:

RADIUS = 2 (makes total width of matrix = 5)
For x = 0..width
  for y = 0..width
    if all pixels in square of radius 2 are alpha = 0
      do nothing
    elsif all pixels in square have alpha = 255
      do nothing
    else
      pixel[x][y].RGB = average RGB of adjacent pixels where alpha != 0
      pixel[x][y].ALPHA = average ALPHA in square

radius=2 的示例结果

当然这是一个相当概念的程序,有很多地方可以记忆和调整这个脚本,但它应该让一个大局清晰

【讨论】:

  • 如果你能详细说明你的答案,我很乐意为你提供赏金,也许可以提供一个简短的例子来说明我应该如何做。
  • 如何使用 Core Image 做到这一点,有什么想法吗?
【解决方案2】:

您可以根据视图的背景颜色更改边框的 alpha。

var r:Float!
var g:Float!
var b:Float!
var a:Float!

if self.view.backgroundColor.getRed(red:r, green:g, blue:b, alpha:a) {
  var imgv = UIImageView(frame: CGRect(x:100, y:100, width:100, height:100))
  imgv.image = UIImage(named:"name")
  imgv.layer.borderWidth = 2.0
  imgv.layer.borderColor = UIColor(red:r, green:g, blue:b, alpha:0.5).CGColor
  imgv.layer.cornerRadius = imgv.frame.size.width / 2
  imgv.clipsToBounds = true
}else{
   //Could not get the RGB of background color
}

您可能会在此代码中看到错误,因为我尚未对其进行测试。

【讨论】:

  • 它不会将边框应用到图像的边缘,而只会应用到图像视图的框架。
  • 你想改变图像本身而不是显示它的容器?
  • "我对羽化图像的边界不感兴趣,只对 alpha 边缘感兴趣。"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-04
  • 2023-03-28
  • 1970-01-01
  • 1970-01-01
  • 2021-07-24
  • 1970-01-01
相关资源
最近更新 更多