当前位置: 首页 > news >正文

常用的图像增强操作

我们将介绍如何用PIL库实现一些简单的图像增强方法。

[!NOTE] 初始化配置

import numpy as np  
from PIL import Image, ImageOps, ImageEnhance  
import warningswarnings.filterwarnings('ignore')
IMAGE_SIZE = 640

[!important] 辅助函数
主要用于控制增强幅度

def int_parameter(level, maxval):  return int(level * maxval / 10)  def float_parameter(level, maxval):  return float(level) * maxval / 10.def sample_level(n):  return np.random.uniform(low=0.1, high=n)

level用于控制增强方法的数值强度,maxval一般取值为4,level是一个从均匀分布中采样的数值,这样让每次增强都具有随机性。

[!example] 增强方法

色彩反转

def invert(pil_img, _):  return ImageOps.invert(pil_img)

镜像

def mirror(pil_img, _):  return ImageOps.mirror(pil_img)

均衡化

def equalize(pil_img, _):  return ImageOps.equalize(pil_img)

色彩分离

def posterize(pil_img, level):  level = int_parameter(sample_level(level), 4)  return ImageOps.posterize(pil_img, 4 - level)

旋转

def rotate(pil_img, level):  degrees = int_parameter(sample_level(level), 30)  if np.random.uniform() > 0.5:  degrees = -degrees  return pil_img.rotate(degrees, resample=Image.BILINEAR)

Solarize

def solarize(pil_img, level):  level = int_parameter(sample_level(level), 256)  return ImageOps.solarize(pil_img, 256 - level)

Shear_x

def shear_x(pil_img, level):  level = float_parameter(sample_level(level), 0.3)  if np.random.uniform() > 0.5:  level = -level  return pil_img.transform((IMAGE_SIZE, IMAGE_SIZE),  Image.AFFINE, (1, level, 0, 0, 1, 0),  resample=Image.BILINEAR)

Shear_y

def shear_y(pil_img, level):  level = float_parameter(sample_level(level), 0.3)  if np.random.uniform() > 0.5:  level = -level  return pil_img.transform((IMAGE_SIZE, IMAGE_SIZE),  Image.AFFINE, (1, 0, 0, level, 1, 0),  resample=Image.BILINEAR)

Translate_x

def translate_x(pil_img, level):  level = int_parameter(sample_level(level), IMAGE_SIZE / 3)  if np.random.random() > 0.5:  level = -level  return pil_img.transform((IMAGE_SIZE, IMAGE_SIZE),  Image.AFFINE, (1, 0, level, 0, 1, 0),  resample=Image.BILINEAR)  

Translate_y

def translate_y(pil_img, level):  level = int_parameter(sample_level(level), IMAGE_SIZE / 3)  if np.random.random() > 0.5:  level = -level  return pil_img.transform((IMAGE_SIZE, IMAGE_SIZE),  Image.AFFINE, (1, 0, 0, 0, 1, level),  resample=Image.BILINEAR)  

Color

def color(pil_img, level):  level = float_parameter(sample_level(level), 1.8) + 0.1  return ImageEnhance.Color(pil_img).enhance(level)  

Contrast

def contrast(pil_img, level):  level = float_parameter(sample_level(level), 1.8) + 0.1  return ImageEnhance.Contrast(pil_img).enhance(level)  

AutoContrast

def autocontrast(pil_img, level):  level = float_parameter(sample_level(level), 10)  return ImageOps.autocontrast(pil_img, 10 - level)  

Brightness

def brightness(pil_img, level):  level = float_parameter(sample_level(level), 1.8) + 0.1  return ImageEnhance.Brightness(pil_img).enhance(level)  

Sharpness

def sharpness(pil_img, level):  level = float_parameter(sample_level(level), 1.8) + 0.1  return ImageEnhance.Sharpness(pil_img).enhance(level)

[!success] 使用案例

对于这样一张原图:

在这里插入图片描述

augmentations_all = {  "autocontrast":autocontrast,  "equalize":equalize,  "posterize":posterize,  "rotate":rotate,  "solarize":solarize,  "shear_x":shear_x,  "shear_y":shear_y,  "translate_x":translate_x,  "translate_y":translate_y,  "color":color,  "contrast":contrast,  "brightness":brightness,  "sharpness":sharpness,  "mirror":mirror,  "invert":invert  }  import matplotlib.pyplot as plt  img=Image.open(r"C:\Users\Administrator\Downloads\result1.5\result\original_resized\class0\0.jpg")  def draw(plt,idx,img,title):  plt.subplot(int("24"+str(idx)))  plt.imshow(img)  plt.xticks([])  plt.yticks([])  plt.title(title)  plt.figure(figsize=(20,16))  
for idx,(k,v) in enumerate(augmentations_all.items()):  draw(plt,(idx)%8+1,v(img.copy(),1),k)  if idx!=0 and idx % 7 == 0:  plt.show()  plt.figure(figsize=(20,16))

在这里插入图片描述
在这里插入图片描述

相关文章:

常用的图像增强操作

我们将介绍如何用PIL库实现一些简单的图像增强方法。 [!NOTE] 初始化配置 import numpy as np from PIL import Image, ImageOps, ImageEnhance import warningswarnings.filterwarnings(ignore) IMAGE_SIZE 640[!important] 辅助函数 主要用于控制增强幅度 def int_param…...

探索TinyDB的轻量级魅力:Python中的微型数据库

文章目录 探索TinyDB的轻量级魅力:Python中的微型数据库背景:为何选择TinyDB?什么是TinyDB?如何安装TinyDB?5个简单的库函数使用方法3个场景下的应用实例常见问题与解决方案总结 探索TinyDB的轻量级魅力:Py…...

模型优化学习笔记—Adam算法

首先复习一下: 动量梯度下降: 1、算出dw、db 2、计算指数加权(移动)平均 vdw k *vdw (1-k)*dw vdb k *vdb (1-k)*db 3、梯度下降 w w - r*vdw b b - r*vdb RMSprop: 1、算出dw和db 2、算指数平均值&am…...

车辆出险报告(h5)-车辆出险记录接口-车辆相关接口

接口简介:通过vin及行驶证查询车辆出险、理赔、事故记录接口。查询成功率99%,返回URL地址的查询报告。 不能对返回的报告进行任何的修改,否则由用户自行承担相应的责任 报告结果只保留30天,如需永久保存,请您查询后自行保存 接口地…...

C基础项目(学生成绩管理系统)

目录 一、项目要求 二、完整代码实例 三、分文件编写代码实例 一、项目要求 1.系统运行,打开如下界面。列出系统帮助菜单(即命令菜单),提示输入命令 2.开始时还没有录入成绩,所以输入命令 L 也无法列出成绩。应提…...

C# 设计模式之原型模式

总目录 前言 在软件系统中,当创建一个类的实例的过程很昂贵或很复杂,并且我们需要创建多个这样类的实例时,如果我们用new操作符去创建这样的类实例,这未免会增加创建类的复杂度和耗费更多的内存空间,因为这样在内存中…...

美林数据Tempo Talents | 两大资源中心,打造开放、成长型数智人才能力平台

在数字化时代的大潮中,高校作为知识与人才培养的重要阵地,独立分散的课程资源管理方式已无法满足现代教育的需求,而数据资源的分散和碎片化也阻碍了科研和教学工作的深入进行。那么,高校如何打造一个集中、高效的课程与数据资源中…...

IDC权威认可!工业领域最佳实践案例!

近日,IDC发布了《工业领域中数据管理分析服务最佳实践案例》报告,总结行业用户在应用过程中面临的主要挑战和实践路径,并评选最佳实践案例,为行业用户提供了相关的指导建议,供市场参考。星环科技中航电梯数据中台项目入…...

未授权访问漏洞系列详解①!

Redis未授权访问漏洞 Redis 默认情况下,会绑定在 0.0.0.0:6379 ,如果没有进行采用相关的策略,比如添加防火墙规则避免其他非信任来源 ip 访问等,这样将会将 Redis 服务暴露到公网上,如果在没有设置密码认证(一般为空)的…...

第1天:Python基础语法(五)

正文: 在之前的文章中,我们已经学习了Python的基本语法集合和集合的一些常用操作。 在本篇文章中,我们将继续学习其他类型 字符串格式化 使用操作符%s来实现 ➢ 几个%s就几个变量 ➢ 超过一个变量时,需要用元组%(…...

【c++】用C++制作一个简易windows系统

源码&#xff1a; #include <iostream> #include <cstdlib> // 为了使用system #include<limits> void clearScreen() {system("cls"); }void displayMenu() {clearScreen();std::cout << "1.我的文件" << std::endl;std::…...

常见锁策略

目录 1.乐观锁/悲观锁 2.重量级锁/轻量级锁&#xff08;轻量重量是站在加锁开销的角度&#xff09; 3.挂起等待锁/自旋锁 4.公平锁/非公平锁 5.可重入锁与不可重入锁 6.读写锁 synchronized 面试题&#xff1a;是什么偏向锁&#xff1f; 锁的升级&#xff1a; 锁消除&…...

【机器学习】人工神经网络优化方法及正则化技术

&#x1f308;个人主页: 鑫宝Code &#x1f525;热门专栏: 闲话杂谈&#xff5c; 炫酷HTML | JavaScript基础 ​&#x1f4ab;个人格言: "如无必要&#xff0c;勿增实体" 文章目录 人工神经网络优化方法及正则化技术1. 引言2. 神经网络优化的基础2.1 损失函数2.…...

Django异步请求和后台管理实战

项目概述 项目实现Ajax异步请求局部刷新使用XAdmin后台模板提供图片上传接口在明细页应用了富文本编辑器在加载图书信息的时候使用LazyLoad&#xff08;图片懒加载&#xff09; # 环境 asgiref3.7.2 crispy-bootstrap32024.1 defusedxml0.7.1 diff-match-patch20230430 Djang…...

大奖放送 | AI编程达人秀视频文章征集大赛来啦!

AI Coding&#xff0c;可以有多少种打开玩法&#xff1f;腾讯云AI代码助手是一款辅助编码工具&#xff0c;基于混元大模型&#xff0c;提供技术对话、代码补全、代码诊断和优化等能力&#xff0c;为你生成优质代码&#xff0c;帮你解决技术难题&#xff0c;提升编码效率。 我…...

最新小猫咪PHP加密系统源码V1.4_本地API接口_带后台

小猫咪PHP加密系统历时半年&#xff0c;它再一次迎来更新&#xff0c;更新加密算法&#xff08;这应该是最后一次更新加密算法了&#xff0c;以后主要更新都在框架功能上面了&#xff09;&#xff0c;适配php56-php74&#xff0c;取消批量加密&#xff08;一些不可控因素&#…...

a bag of bones

以下是根据你提供的内容制作的5道选择题&#xff0c;包括答案和解析&#xff1a; 1. 短语 "a bag of bones" 通常用来描述什么&#xff1f; - A. 一个恐怖片中的角色 - B. 一个非常瘦弱的人 - C. 一个懒惰的人 - D. 一个穿着比基尼的人 答案&#xff1a;B 解析&#…...

XLT高速线缆自动化测试系统

高速线缆自动化测试系统 随着高速通信的快速发展&#xff0c;对于高速数据通信线缆性能要求日益增高&#xff0c;在其硏发、生产阶段&#xff0c;需要多次测试射频性能。传统人工手动测试存在测试环境搭建复杂、测试效率低、耗时长&#xff0c;特别是多次测试中因为人工测试带…...

微软AI业务最新营收数据情况(2024年7月)

Azure AI 年度经常性收入 (ARR)&#xff1a;达到50亿美元客户数量&#xff1a;60,000家平均客户价值 (ACV) 中位数&#xff1a;83,000美元同比增长率&#xff1a;达到了惊人的900% GitHub Copilot 年度经常性收入 (ARR)&#xff1a;达到3亿美元客户数量&#xff1a;77,000家…...

canvas绘制表格

canvas绘制表格 最近在为公司产品做技术预研&#xff0c;经理让用canvas做一个表格&#xff0c;于是就有了这篇博客。 我们的数据是后端通过MQTT推送过来的 我在代码中也直接使用了 具体MQTT的实现代码&#xff0c;可见博客 在vue使用MQTT 在这里为了方便实用我直接封装成组件…...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

CocosCreator 之 JavaScript/TypeScript和Java的相互交互

引擎版本&#xff1a; 3.8.1 语言&#xff1a; JavaScript/TypeScript、C、Java 环境&#xff1a;Window 参考&#xff1a;Java原生反射机制 您好&#xff0c;我是鹤九日&#xff01; 回顾 在上篇文章中&#xff1a;CocosCreator Android项目接入UnityAds 广告SDK。 我们简单讲…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

AI编程--插件对比分析:CodeRider、GitHub Copilot及其他

AI编程插件对比分析&#xff1a;CodeRider、GitHub Copilot及其他 随着人工智能技术的快速发展&#xff0c;AI编程插件已成为提升开发者生产力的重要工具。CodeRider和GitHub Copilot作为市场上的领先者&#xff0c;分别以其独特的特性和生态系统吸引了大量开发者。本文将从功…...

pikachu靶场通关笔记22-1 SQL注入05-1-insert注入(报错法)

目录 一、SQL注入 二、insert注入 三、报错型注入 四、updatexml函数 五、源码审计 六、insert渗透实战 1、渗透准备 2、获取数据库名database 3、获取表名table 4、获取列名column 5、获取字段 本系列为通过《pikachu靶场通关笔记》的SQL注入关卡(共10关&#xff0…...

Mac下Android Studio扫描根目录卡死问题记录

环境信息 操作系统: macOS 15.5 (Apple M2芯片)Android Studio版本: Meerkat Feature Drop | 2024.3.2 Patch 1 (Build #AI-243.26053.27.2432.13536105, 2025年5月22日构建) 问题现象 在项目开发过程中&#xff0c;提示一个依赖外部头文件的cpp源文件需要同步&#xff0c;点…...

在 Spring Boot 中使用 JSP

jsp&#xff1f; 好多年没用了。重新整一下 还费了点时间&#xff0c;记录一下。 项目结构&#xff1a; pom: <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://ww…...

mac:大模型系列测试

0 MAC 前几天经过学生优惠以及国补17K入手了mac studio,然后这两天亲自测试其模型行运用能力如何&#xff0c;是否支持微调、推理速度等能力。下面进入正文。 1 mac 与 unsloth 按照下面的进行安装以及测试&#xff0c;是可以跑通文章里面的代码。训练速度也是很快的。 注意…...

阿里云Ubuntu 22.04 64位搭建Flask流程(亲测)

cd /home 进入home盘 安装虚拟环境&#xff1a; 1、安装virtualenv pip install virtualenv 2.创建新的虚拟环境&#xff1a; virtualenv myenv 3、激活虚拟环境&#xff08;激活环境可以在当前环境下安装包&#xff09; source myenv/bin/activate 此时&#xff0c;终端…...