合成微缩效果

  • 前言
  • 图像微缩效果原理
  • 实现图像微缩效果
  • 相关链接

前言

图像中的模糊效果可以强烈影响被拍摄场景的感知,模糊在传达所需的尺寸和距离感方面起着重要作用。合成微缩 (miniature faking) 是一个使真实大小物体照片看起来像微缩模型照片的过程,也称为 Diorama Effect/Fillusion,照片的模糊部分模拟了通常在特写摄影中通常遇到的近景深度,从而使场景看起来比实际场景小得多。

图像微缩效果原理

应用模糊近似于浅的景深可以合成微缩效果。当图像很大并从短距离观看时,效果更为明显。在本节中,我们将学习如何使用 PIL 库在图像中创建微缩效果。
使用掩码可以选择应重点关注的焦点对象,本节中我们使用的二值掩码具有在对象交点处为黑色像素,而其他位置为白色像素。将高斯模糊应用到图像上,然后使用掩码从原始图像或模糊图像中选择合适的像素。
为了模拟场景效应的深度,需要在图像中多次应用高斯模糊,然后使用形态学运算腐蚀缩放的掩码来重复高斯模糊过程,这将在模糊后的掩码中产生线性梯度。同时,还需要增强图像的颜色和亮度。

实现图像微缩效果

(1) 首先,导入所有必需的库:

from PIL import Image, ImageEnhance, ImageFilter
from scipy.ndimage import binary_erosion
from PIL.ImageFilter import GaussianBlur
import matplotlib.pyplot as plt, numpy as np

(2) 使用形态学腐蚀缩放后的掩码图像,然后通过使用给定半径迭代应用高斯模糊 GaussianBlur()。每次重复应用掩码都会对高斯模糊进行扩大,以确保梯度模糊,并增加模糊程度:

def apply_gradient_blur(image, mask, n=10, radius=1):mask = mask.convert("1")for i in range(n):mask = binary_erosion(np.array(mask), structure=np.ones((10,10)), border_value=1)im_blur = image.filter(GaussianBlur(radius=radius))image.paste(im_blur, mask=Image.fromarray(mask))return image

(3) 接下来,根据函数 apply_gradient_blur() 定义函数 create_fake_miniature() 创建合成微缩效果,在函数中,使用 pil.imageenhance 模块的 Color()Contrast() 函数增强图像的颜色和对比度,然后使用 apply_gradient_blur() 函数将梯度模糊应用于焦点外部的区域(即对应于掩码中的白色像素);最后,将增强的图像(焦点区域)与模糊图像(焦点外部区域)合并:

def create_fake_miniature(im, custom_mask, color=1.9, contrast=1.4, blur_radius=1.3):# 提高对比度和颜色edited = ImageEnhance.Contrast(ImageEnhance.Color(im).enhance(color)).enhance(contrast)# 模糊图像并合并im_blur = apply_gradient_blur(edited.copy(), mask.copy(), n=50, radius=blur_radius)edited = edited.convert("RGBA")edited.paste(im_blur, mask=mask)return edited

(4) 使用 pil image.open() 函数读取输入图像和掩码图像(焦点区域)作为输入创建合成微缩效果。绘制输入图像:

im = Image.open("9.png")
mask = Image.open("9_binary.png")
out = create_fake_miniature(im, mask)
plt.figure(figsize=(20,10))
plt.imshow(im), plt.axis('off'), plt.title('Original image', size=10)
plt.show()

(5) 绘制二值掩码图像:

plt.figure(figsize=(10,10))
plt.imshow(mask), plt.axis('off'), plt.title('(Bell Whistles) Mask image', size=10)
plt.show()


(6) 最后,绘制合成微缩效果输出图像如下:

plt.figure(figsize=(20,10))
plt.imshow(out), plt.axis('off'), plt.title('Fake Miniature image', size=10)
plt.show()


从上图中可以看出,焦点中的建筑物似乎距离镜头更近了。

相关链接

Python图像处理【1】图像与视频处理基础
Python图像处理【2】探索Python图像处理库
Python图像处理【3】Python图像处理库应用

[Python图像处理] 合成微缩效果相关推荐

  1. python图像处理:凸透镜效果/鱼眼图像

    图像处理:凸透镜效果/鱼眼图像 原理 效果 应用 代码 原理 原理很简单,经过凸透镜放大的区域可以看成一个圆形区域,这个圆形区域是由原始图像一个很小的圆形区域扩展而来. 效果 应用 python图像处 ...

  2. 【python图像处理】两幅图像的合成一幅图像(blending two images)

    将两幅图像合成一幅图像,是图像处理中常用的一种操作,python图像处理库PIL中提供了多种种将两幅图像合成一幅图像的接口. 下面我们通过不同的方式,将两图合并成一幅图像. 1.使用Image.ble ...

  3. python动态图-Python图像处理之gif动态图的解析与合成操作详解

    本文实例讲述了Python图像处理之gif动态图的解析与合成操作.分享给大家供大家参考,具体如下: gif动态图是在现在已经司空见惯,朋友圈里也经常是一言不合就斗图.这里,就介绍下如何使用python ...

  4. python绘制动态图-Python图像处理之gif动态图的解析与合成操作详解

    本文实例讲述了Python图像处理之gif动态图的解析与合成操作.分享给大家供大家参考,具体如下: gif动态图是在现在已经司空见惯,朋友圈里也经常是一言不合就斗图.这里,就介绍下如何使用python ...

  5. python3d动态图-Python图像处理之gif动态图的解析与合成操作详解

    本文实例讲述了Python图像处理之gif动态图的解析与合成操作.分享给大家供大家参考,具体如下: gif动态图是在现在已经司空见惯,朋友圈里也经常是一言不合就斗图.这里,就介绍下如何使用python ...

  6. 多个视频文件合成画中画效果(Python版)

    Step 1 从视频中分离出音频(MP4->mp3) def separateMp4ToMp3(tmp):mp4 = tmp.replace('.tmp', '.mp4')print('---& ...

  7. 《OpenCv视觉之眼》Python图像处理六 :Opencv图像傅里叶变换和傅里叶逆变换原理及实现

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  8. Python图像处理丨详解图像去雾处理方法

    摘要:本文主要讲解ACE去雾算法.暗通道先验去雾算法以及雾化生成算法. 本文分享自华为云社区<[Python图像处理] 三十.图像预处理之图像去雾详解(ACE算法和暗通道先验去雾算法)丨[拜托了 ...

  9. 万字长文告诉新手如何学习Python图像处理(上篇完结 四十四) | 「Python」有奖征文

    该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...

最新文章

  1. 英特尔二号人物被解雇:7nm全面落后,芯片还要外包代工
  2. 一文攻破结构体-C语言
  3. 阿里Java面试题剖析:为什么使用消息队列?消息队列有什么优点和缺点?
  4. SpringMVC-方法四种类型返回值总结,你用过几种?
  5. 【原创】Team Foundation Server 域环境迁移
  6. threejs 影子属性_影子场vs.属性访问器接口第2轮
  7. 精度优秀,速度214.7 fps !卡内基梅隆大学开源强大的3D多目标跟踪系统
  8. 机器学习(五)PCA数据降维
  9. Android保存用户名和密码
  10. rust腐蚀 木制窗户怎么修_潜艇围壳上的窗户为什么不会裂开?
  11. 取ifrme里的div的代码
  12. 六石管理学:你觉得别人错了,应该怎么办
  13. WIN10关闭Windows Defender
  14. PHP读取Excel和导出数据至Excel
  15. 注册表--设置文件打开方式
  16. POJ 1252 Euro Efficiency G++ 完全背包 背
  17. 判断四边形凹凸性及凹点
  18. 面部捕捉技术_新功能要来!苹果收购面部捕捉技术公司Faceshift
  19. web前端牛人博客整理
  20. springboot(十六) 2.0变化

热门文章

  1. 服务器安装找不到lsi驱动,IBM 机架式服务器RAID卡驱动问题
  2. 性能测试工具操作数据库(十)-Loadrunner与Redis
  3. pinbox: 我用过最好的收藏工具
  4. 如何升级MacOS自带的PHP到指定版本(5.3-7.3)
  5. 7 客户端认证方式 之 client_secret_jwt
  6. n-魔方阵(找规律)
  7. 口碑营销怎么做?如何做好网络口碑营销推广?
  8. STA分析(六) cross talk and noise
  9. 通俗理解 set,dict 背后的哈希表
  10. DB2根据指定列筛选重复数据