使用pillow实现tensorflow中的一些图像增强函数(crop,contrast,flip,per_image_standardization)

本文介绍如何使用Python的PIL库进行图像增强处理,包括随机裁剪、水平翻转及对比度调整等功能,并提供了具体实现代码。相较于TensorFlow自带函数,此方法更高效便捷。
部署运行你感兴趣的模型镜像

使用tensorflow自带的tf.random_crop()、tf.image.random_flip_left_right()、以及random_contrast()等函数处理图像数据时,不仅需要使用session,而且处理速度非常慢。使用Pillow库完成这些函数接口,在实际数据处理时就非常快速和方便。

#!/usr/bin/env python
#-*- coding:utf-8 -*-
############################
#File Name: pic_process_PIL.py
#Author: Wang 
#Mail: @hotmail.com
#Created Time:2017-08-14 10:28:14
############################

from PIL import Image
import ImageEnhance
import numpy as np
from random import randint
import random

img = Image.open('1.jpg')
#print img.format, img.size, img.mode
#img.resize((1080,768))
#img.crop((14,14,79,79)).show()
#print img.getpixel((1920,1080))


def random_crop(img, width, height):
    width1 = randint(0, img.size[0] - width )
    height1 = randint(0, img.size[1] - height)
    width2 = width1 + width
    height2 = height1 + height
    img = img.crop((width1, height1, width2, height2))
    return img

def random_flip_left_right(img):
    prob = randint(0,1)
    if prob == 1:
        img = img.transpose(Image.FLIP_LEFT_RIGHT)
    return img

def random_contrast(img, lower = 0.2, upper = 1.8):
    factor = random.uniform(lower, upper)
    img = ImageEnhance.Sharpness(img)
    img = img.enhance(factor)
    return img

def random_brightness(img, lower = 0.6, upper = 1.4):
    factor = random.uniform(lower, upper)
    img = ImageEnhance.Brightness(img)
    img = img.enhance(factor)
    return img


def random_color(img, lower = 0.6, upper = 1.5):
    factor = random.uniform(lower, upper)
    img = ImageEnhance.Color(img)
    img = img.enhance(factor)
    return img


def per_image_standardization(img):
    '''stat = ImageStat.Stat(img)
    mean = stat.mean
    stddev = stat.stddev
    img = (np.array(img) - stat.mean)/stat.stddev'''
    if img.mode == 'RGB':
        channel = 3
    num_compare = img.size[0] * img.size[1] * channel
    img_arr=np.array(img)
    #img_arr=np.flip(img_arr,2)
    img_t = (img_arr - np.mean(img_arr))/max(np.std(img_arr), 1/num_compare)
    return img_t

#img = random_crop(img,1000,1000)
#img = random_flip_left_right(img)
'''img = ImageEnhance.Sharpness(img)
img.enhance(5.0).show()'''
#img = random_contrast(img, 4,6)

使用时只需导入这个文件即可。

关于使用PIL库做图像增强,这里有一篇博客写的很详细:

http://www.cnblogs.com/txw1958/archive/2012/02/21/python3-PIL.html


您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

### FLIP模型概述 FLIP (Feature Loss for Image Processing) 模型是一种用于评估和优化图像处理任务质量的损失函数。不同于传统的均方误差(MSE)FLIP旨在更贴近人类视觉系统的感知特性来衡量图像差异,因此能更好地指导深度学习模型训练过程中的参数调整[^1]。 ### 架构原理 FLIP模型结合了多种特征提取机制以模拟人眼对于不同频率成分敏感度的变化规律: - **空间对比敏感度函数(Spatial Contrast Sensitivity Function, SCF)**:用来描述人眼对特定方向上亮度变化的感受能力; - **色彩对立响应(Color-Opponent Responses, CORs)**:反映视网膜细胞如何区分颜色信息; - **局部自适应增益控制(Local Adaptive Gain Control, LAGC)**:模仿大脑皮层神经元活动特点,在计算像素间相似性时考虑周围环境影响; 这些组件共同作用于输入图片对之间,并最终汇总成一个标量得分作为两图差距大小的量化指标。此评分不仅有助于提升生成对抗网络(GANs)等生成式模型输出效果的真实感,也适用于其他各类依赖精确重建或转换操作的任务场景中[^3]。 ```python import torch.nn as nn class FLIPLoss(nn.Module): def __init__(self): super(FLIPLoss, self).__init__() # Initialize components like SCF, COR and LAGC here def forward(self, img_a, img_b): """ Compute the FLIP loss between two images. Args: img_a (Tensor): First image tensor. img_b (Tensor): Second image tensor. Returns: Tensor: Scalar value representing perceptual difference score. """ # Implement feature extraction using initialized components pass ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值