【人工智能项目】工业钢板焊缝图像去噪处理

使用Python读取Tiff图像的几种方法 本文总结了使用PIL, opencv, gdal 读取多通道Tiff格式遥感影像的方法。 阅读详情

【人工智能项目】工业钢板焊缝图像去噪处理

在这里插入图片描述

最近,论文盲审了~ 工作等谈薪了~。没大有什么事情了,就准备把研究生阶段做过的一些东西分享出来,希望给大家有所帮助。

本次分享的是有关一些高分辨率图像背景较为复杂的图像一些去噪处理方法,我当时处理的图像的分辨率大小是6000x1500分辨率,主要是当时工业背景较为复杂,待检测的缺陷对象与背景的差异不明显,因此需要对背景去噪,缺陷点增强的处理。

在这里插入图片描述

读取图片

首先给出本次处理的原始图片。
在这里插入图片描述
从原图中可以看出缺陷点与背景差异极其不明显,若想送入神经网络中必需要先对其进行预处理工作。

import cv2 
img = cv2.imread("src.tif",1)
#第二个参数是通道数和位深的参数,
#IMREAD_UNCHANGED = -1#不进行转化,比如保存为了16位的图片,读取出来仍然为16位。
#IMREAD_GRAYSCALE = 0#进行转化为灰度图,比如保存为了16位的图片,读取出来为8位,类型为CV_8UC1。
#IMREAD_COLOR = 1#进行转化为RGB三通道图像,图像深度转为8位
#IMREAD_ANYDEPTH = 2#保持图像深度不变,进行转化为灰度图。
#IMREAD_ANYCOLOR = 4#若图像通道数小于等于3,则保持原通道数不变;若通道数大于3则只取取前三个通道。图像深度转为8位
print (img.shape)
print (img.dtype) 
print (img.min())
print (img.max())
#创建窗口并显示图像
# cv2.namedWindow("Image")
# cv2.imshow("Image",img)
# cv2.waitKey(0)
# #释放窗口
# cv2.destroyAllWindows() 

(2072, 6822, 3)
uint8
80
252

图像模糊预处理

通过将图像与低通滤波器内核进行卷积来实现图像模糊。这对于消除噪音很有用。它实际上从图像中消除了高频部分(例如噪声,边缘)。因此,在此操作中边缘有些模糊。(有一些模糊技术也可以不模糊边缘)。OpenCV主要提供四种类型的模糊技术。

import cv2 as cv
import numpy as np
from matplotlib import pyplot as plt


plt.imshow(img2),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.show()

在这里插入图片描述

# 中位模糊
blur = cv.blur(img2,(5,5))
plt.imshow(blur),plt.title('Blurred')
plt.xticks([]), plt.yticks([])
plt.show()
cv2.imwrite("blur.jpg",blur)

在这里插入图片描述

# 高斯滤波
blur = cv.GaussianBlur(img,(3,3),0)
plt.imshow(blur),plt.title('GaussianBlur')
plt.xticks([]), plt.yticks([])
plt.show()
cv2.imwrite("GaussianBlur.jpg",blur)

在这里插入图片描述

# 双边滤波
blur = cv.bilateralFilter(img,9,75,75)
plt.imshow(blur),plt.title('bilateralFilter')
plt.xticks([]), plt.yticks([])
plt.show()
cv2.imwrite("bilateralFilter.jpg",blur)

在这里插入图片描述

对比度增强

在进行对比度增强之前,先看一下图像的灰度直方图的分布情况。

import cv2 as cv
import numpy as np
import matplotlib.pyplot as plt
 
def calcGrayHist(I):
    # 计算灰度直方图
    h, w = I.shape[:2]
    grayHist = np.zeros([256], np.uint64)
    for i in range(h):
        for j in range(w):
            grayHist[I[i][j]] += 1
    return grayHist
 
img = cv.imread("src.tif")
grayHist = calcGrayHist(img)
x = np.arange(256)
# 绘制灰度直方图
plt.plot(x, grayHist, 'r', linewidth=2, c='black')
plt.xlabel("gray Label")
plt.ylabel("number of pixels")
plt.show()
# cv.imshow("img", img)
# cv.waitKey()

在这里插入图片描述

# 线性变换
# 对图像进行 线性变换
def linear_transform(img, a, b):
    '''
    :param img: [h, w, 3] 彩色图像
    :param a:  float  这里需要是浮点数,把图片uint8类型的数据强制转成float64
    :param b:  float
    :return: out = a * img + b
    '''
    out = a * img + b
    out[out > 255] = 255
    out = np.around(out)
    out = out.astype(np.uint8)
    return out

# a = 2, b=10
img = cv2.imread("src.tif") # 这里需要指定一个 img_path
img = linear_transform(img, 1, 10)
img =  cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.imshow(img)

cv2.imwrite("linear.jpg",img)

在这里插入图片描述

# 直方图正规化
 
img = cv.imread("src.tif", 0)
# 计算原图中出现的最小灰度级和最大灰度级
# 使用函数计算
Imin, Imax = cv.minMaxLoc(img)[:2]
# 使用numpy计算
# Imax = np.max(img)
# Imin = np.min(img)
Omin, Omax = 0, 255
# 计算a和b的值
a = float(Omax - Omin) / (Imax - Imin)
b = Omin - a * Imin
out = a * img + b
out = out.astype(np.uint8)
# cv.imshow("img", img)
# plt.imshow("out",out)
# cv.imshow("out", out)
# cv.waitKey()
cv2.imwrite("normalize.jpg",out)
# 伽马变换
img = cv.imread("src.tif", 0)
# 图像归一化
fi = img / 255.0
# 伽马变换
gamma = 0.4
out = np.power(fi, gamma)
cv2.imwrite("gamma.jpg",out)
# 直方图均衡化
# 对图像进行 均衡化
def equalize_transfrom(gray_img):
    return cv.equalizeHist(gray_img)

img = cv2.imread("GaussianBlur.jpg") # 这里需要指定一个 img_path
b = img[:, :, 0]
g = img[:, :, 1]
r = img[:, :, 2]
b_out = equalize_transfrom(b)
g_out = equalize_transfrom(g)
r_out = equalize_transfrom(r)
equa_out = np.stack((b_out, g_out, r_out), axis=-1)
img =  cv2.cvtColor(equa_out,cv2.COLOR_BGR2RGB)
plt.imshow(img)

# 保存图片
cv2.imwrite("equalize.jpg",img)

在这里插入图片描述

# 高斯滤波
blur = cv.GaussianBlur(img,(3,3),0)
plt.imshow(blur),plt.title('GaussianBlur')
plt.xticks([]), plt.yticks([])
plt.show()
cv2.imwrite("GaussianBlur.jpg",blur)

在这里插入图片描述

# 全局直方图均衡化
import math

def equalHist(img):
    # 灰度图像矩阵的高、宽
    h, w,_ = img.shape
    # 第一步:计算灰度直方图
    grayHist = calcGrayHist(img)
    # 第二步:计算累加灰度直方图
    zeroCumuMoment = np.zeros([256], np.uint32)
    for p in range(256):
        if p == 0:
            zeroCumuMoment[p] = grayHist[0]
        else:
            zeroCumuMoment[p] = zeroCumuMoment[p - 1] + grayHist[p]
    # 第三步:根据累加灰度直方图得到输入灰度级和输出灰度级之间的映射关系
    outPut_q = np.zeros([256], np.uint8)
    cofficient = 256.0 / (h * w)
    for p in range(256):
        q = cofficient * float(zeroCumuMoment[p]) - 1
        if q >= 0:
            outPut_q[p] = math.floor(q)
        else:
            outPut_q[p] = 0
    # 第四步:得到直方图均衡化后的图像
    equalHistImage = np.zeros(img.shape, np.uint8)
    for i in range(h):
        for j in range(w):
            equalHistImage[i][j] = outPut_q[img[i][j]]
    return equalHistImage
 
img = cv.imread("src.tif", 0)
# 使用自己写的函数实现
equa = equalHist(blur)
cv2.imwrite("equalize2.jpg",equa)
# 自动色彩均衡
img = cv2.imread("equalize.jpg",1) # 这里需要指定一个 img_path
b, g, r = cv2.split(img)
B = np.mean(b)
G = np.mean(g)
R = np.mean(r)
K = (R + G + B) / 3
Kb = K / B
Kg = K / G
Kr = K / R
cv2.addWeighted(b, Kb, 0, 0, 0, b)
cv2.addWeighted(g, Kg, 0, 0, 0, g)
cv2.addWeighted(r, Kr, 0, 0, 0, r)
merged = cv2.merge([b,g,r])
plt.imshow(merged)
cv.imwrite('merged.jpg',merged)

在这里插入图片描述

# 自适应直方图均衡
import numpy as np
import cv2 as cv
img = cv2.imread("merged.jpg",0) # 这里需要指定一个 img_path
# create a CLAHE object (Arguments are optional).
clahe = cv.createCLAHE(clipLimit=2.0, tileGridSize=(8,8))
cl1 = clahe.apply(img)
plt.imshow(cl1)
cv.imwrite('clahe_2.jpg',cl1)

在这里插入图片描述

python处理 TIFF 格式数据 Python读取 tiff 格式数据前言一、读取TIFF文件二、使用步骤1.引入库2.读入数据总结 前言 参考文献1 GDAL 是一个开源的操作栅格数据和矢量数据的库,本文记录下用 Python 中 GDAL 库操作 TIFF (GeoTIFF)的常见代码,包括读写、获取坐标系、获取指定位置像元值等。 TIFF 简单理解就是一种图像格式,类似于 jpg、png 等。 GeoTIFF 就是在普通 TIFF 文件上增加了地理位置、投影信息、坐标信息等,常用于遥感数据。 一、读取TIFF文件 示例:pan. 阅读详情

相关推荐

Python学习之读取TIFF文件

opencv读取 #导入cv模块 import cv2 as cv import numpy as np #读取图像,支持 bmp、jpg、png、tiff 等常用格式 #第二个参数是通道数和位深的参数,有四种选择,参考https://www.cnblogs.com/goushibao/p/6671079.html img = cv.imread("filename.tif",2) print

u013429484的博客 3万+

总结Python读取TIF影像的几种方法

总结Python读取tif格式图像的几种方法

a_13572035650的博客 2万+

Light Tools 8.4 在 win10系统上的安装方法(64位)

** 总的来说安装LT需要以下步骤(折腾了三天终于装好): 安装LT软件–禁用签名–加载含数字签名的第三方inf–添加注册表/安装驱动/添加密钥–成功破解 一、下载对应的LightTools 8.4版本软件,如下图为解压后的文件: 并选择 进行默认安装。 二、禁用数字签名。这里我用了两种方法,一种不行就换另一种,最终成功禁用。 方法1: 1、输入“cmd”并以管理员身份运行; 2、输入或复制 bcdedit.exe /set nointegritychecks on (此命令若没成功,再试bcded

weixin_45560953的博客 1万+

用python读取tif格式图像

用python读取tif格式图像 import cv2 as cv #读取图像,支持 bmp、jpg、png、tiff 等常用格式 img = cv.imread("11.tif",1) #第二个参数是通道数和位深的参数, #IMREAD_UNCHANGED = -1#不进行转化,比如保存为了16位的图片,读取出来仍然为16位。 #IMREAD_GRAYSCALE = 0#进行转化为灰度图,比如...

朴素.无恙的博客 5万+

硅谷刷屏的ClawdBot,让Mac mini卖爆了!创始人爆料:一人开发、100% AI 写代码

这两天,个人 AI 助手 ClawdBot 席卷硅谷,国内外社交平台上全是关于它的讨论。 在试用后,网友们纷纷给出了很高的评价。“它是迄今为止最伟大的 AI 应用,相当于你 24 小时全天候专属 AI 员工。”Creator Buddy 创始人兼 CEO Alex Finn 盛赞道,“这就是他们 (Anthropic) 希望 Claude Cowork 呈现的样子。”

技术引领业务创新 1587

TSMaster二次开发实战:如何用Python搞定CAN/CANFD事件回调(附完整代码)

本文详细介绍了如何利用Python进行TSMaster二次开发,实现CAN/CANFD事件回调功能。通过实战代码演示,讲解了预发送与后处理回调的核心区别、注册流程、资源管理及性能优化技巧,帮助工程师高效构建自动化测试与数据监控应用。

star的博客 672

利用python对TIF/TIFF或者其他图像的处理过程

此篇博客是针对TIF/TIFF图像小白的,但具有一些python基础的。 什么是TIF/TIFF图像? 先说一下其他的图像格式; JPG/JPEG 是如今最常用的图片格式之一,其优点为兼容性高、传输速度快、内存小。JPG是一种有损压缩方案,可在保持较高图片质量的前提下,被压缩到原图内存的二十分之一大小。 当然,如果是出于对图片高质量的要求,JPG格式的图片依然存在失真的情况,故而无法与PNG或TIF格式相比较. 值得一提的是,在图片编辑中,对于JPG格式的图片,每一次输出都会损失像素质量,因此当我们在用图片

学习记录空间 1万+

Mike 21如何制作随水深变化的糙率文件

MIKE 21如何制作随水深变化的糙率文件

zhuzhujiayoua的博客 2250

python读取tif图片_Python读取TIFF多通道图像

1.PILfrom PIL import Imageim = Image.open("filename")支持单通道及多通道Uint8 TIFF图像读取,读取单通道Uint16 TIFF图像转为Uint8处理,直接读取Uint16 TIFF多通道图像出错,错误信息:2.OpenCVimport cv2cv2.imread("filename",flags)对于cv2,imread的关于通道数和位深...

weixin_40001275的博客 5909

Linux ARM平台开发系列讲解(GPIO子系统) 2.3.2 GPIO子系统常用函数解析

1. 概述 该章节会记录一年常用的GPIO子系统常用函数,会更具情况不断更新 static inline int gpio_get_value(unsigned int gpio) 功能 :用于获取某个GPIO引脚上的值 gpio : gpio引脚号 返回值:非负值,得到的 GPIO 值;负值,获取失败。 static inline void gpio_set_value(unsigned int gpio, int value) static inline int gpio_cansleep(unsi

DSMGUOGUO的博客 670

基于深度学习的番茄成熟度检测系统——YOLOv5、YOLOv8、YOLOv10及UI界面的实现

YOLO是一种快速且准确的目标检测模型,近年来,YOLOv5、YOLOv8和YOLOv10作为YOLO系列的重要版本,分别在速度、精度和效率上进行了优化。下面我们简要介绍这些模型。本文介绍了如何基于YOLOv5、YOLOv8和YOLOv10等深度学习模型,结合PyQt5设计一个番茄成熟度检测系统。通过训练模型、优化算法和设计用户友好的界面,我们能够构建一个高效且准确的番茄成熟度检测系统,广泛应用于农业自动化和智能化管理中。

YOLO 1002

使用Python的gdal库读取tif格式遥感图像并将其切割为多个小图(按坐标系正确输出)

使用Python的gdal库读取tif格式遥感图像并将其切割为多个小图(按坐标系正确输出)

weixin_44741855的博客 1673

MinerU 系列教程 | 第二课:快速上手 -- 安装与第一次解析

本篇教程作为的第二课,将带你从零完成 MinerU 的环境搭建、模型下载,并成功运行第一次文档解析。上一课我们从宏观视角认识了 MinerU,本课开始正式动手实践。

weixin_43674738的博客 304

利用python读写tiff遥感影像数据

利用python读写tiff遥感影像数据 # 读图像文件 def read_img(filename): dataset = gdal.Open(filename) # 打开文件 im_width = dataset.RasterXSize # 栅格矩阵的列数 im_height = dataset.RasterYSize # 栅格矩阵的行数 im_geotrans = dataset.GetGeoTransform() # 仿射矩阵 im_proj = da

qq_22472089的博客 9495

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【使用python读取tif文件】python读取tif文件常用的7种方法你知道多少?不同场合应该用什么方法?来看看吧?附代码。

【使用python读取tif文件】python读取tif文件常用的7种方法你知道多少?不同场合应该用什么方法?来看看吧?附代码。

985小水博的摸鱼日常 2076

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【Python实例】Python读取并绘制tif数据

【Python实例】Python读取并绘制tif数据

WW、forever的博客 3597

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python读取tif图片,在Python中读取TIFF图像元数据

How can I read metada, like coordinates, from a TIFF image in Python? I tried foo._getexif() from PIL, but got the message:AttributeError: 'TiffImageFile' object has no attribute '_getexif'Is it possi...

weixin_33850554的博客 1980

Python读取和处理分析 tif 数据详解教程

【代码】Python读取和处理TIFF数据教程 (由简入深)

好记性不如烂笔头 2733

python中读取tif

用skimage读取tif from skimage import io imgpath='image/file/name.tif' img=io.imread(imgpath) r=img[:,:,0] g=img[:,:,1] b=img[:,:,2] nir=img[:,:,3] 读取得到的img是数组ndarray,type=unit32, channel顺序是RGB/RGBA,像素值默...

weixin_43779943的博客 1万+

python使用GDAL对tif影像文件进行操作

在需要用到tif影像文件的场景和研发任务中,难免会遇到一些需要对Tiff影像进行操作的需求,比如通过识别在影像文件实现识别结果的标注,对影像文件进行裁剪,获取Tiff影像中的地理空间信息等。

qq_26546227的博客 5262

python 读取tif元数据

python相关学习资料:https://edu.51cto.com/video/4645.htmlhttps://edu.51cto.com/video/3502.htmlhttps://edu.51cto.com/video/3832.htmlPython 读取 TIFF 图像元数据的科普 TIFF(Tagged...

weixin_33980343的博客 343

Python PIL库实战:高效读取与处理TIF图像数据的完整指南

本文详细介绍了如何使用Python PIL库高效读取和处理TIF图像数据,包括环境搭建、多页TIF处理、格式转换及性能优化等实用技巧。特别针对TIF格式的无损压缩和多页存储特性,提供了专业的解决方案和代码示例,适合计算机视觉和图像处理领域的开发者参考。

weixin_30687051的博客 327

Python读写TIFF文件——多张栅格数据逐像元相加计算

【代码】Python读写TIFF文件——多张栅格数据逐像元相加计算。

weixin_61965078的博客 613

python tif转png_Python:读写TIFF 16位,三通道彩色图像

Does anyone have a method for importing a 16 bit per channel, 3 channel TIFF image in Python?I have yet to find a method which will preserve the 16 bit depth per channel when dealing with the TIFF for...

weixin_39849800的博客 905

特定场景小众领域数据集之——焊缝质量检测数据集

特定场景小众领域数据集之——焊缝质量检测数据集

2201_75285525的博客 6765
上一篇: Few-shot learning 少样本学习
下一篇: 【人工智能项目】使用AutoML进行数据预测实战
mind_programmonkey
mind_programmonkey 领域专家: 算法与数据结构技术领域 领域专家: 算法与数据结构技术领域
博客等级 码龄9年 4435粉丝 1111原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mind_programmonkey

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值