android - iOS 和 Android 图像边缘羽化算法或库,类似于 photoshop 的

标签 android ios algorithm image-processing

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

Feathering Image

最佳答案

假设你有 alpha channel (就像在透明背景的照片上一样),常规的卷积模糊矩阵似乎应该满足你。

但是不要通过 RGB channel - 您应该只通过 ALPHA channel 。

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

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

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

编辑:

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

您可以在代码末尾查看算法。自实现以来,我注意到: - 如果所有相邻像素都是 255 或 0(alpha channel ),则无需模糊 - 在其他情况下也需要模糊 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

半径=2 的示例结果

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

enter image description here

关于android - iOS 和 Android 图像边缘羽化算法或库,类似于 photoshop 的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32362263/

相关文章:

java - Android 运行时权限不断被拒绝

Android 事件计时(Toasts 和 Intents)

iOS Offline 第一个应用单一责任问题

php - 防止两个保留之间发生冲突的代码逻辑

algorithm - 将帧转换为 NTSC 丢帧时间码

android - 如何在不配对的情况下使用蓝牙在Android编程中发送和接收数据?

android - Flutter firebase_messaging android 应用程序在 .getToken() 调用时崩溃

c# - 为 Unity3D 构建一个正交相机,我怎样才能让四个特定目标保持在视线范围内?

ios - 如何在 Swift 4 中提取特定数组

arrays - 面试题: Even and odd elements at even and odd positions (keep elements order)