
图像处理
spectrelwf
这个作者很懒,什么都没留下…
展开
-
语义分割损失函数系列(3):Dice损失
Dice损失在医学图像分割任务中使用得极多,用于度量两个集合得相似性,dice系数的定义如下:DiceCoefficient=2∣A∩B∣∣A∣+∣B∣Dice Coefficient = \frac{2|A\cap B|}{|A| + |B|} DiceCoefficient=∣A∣+∣B∣2∣A∩B∣Dice 损失等于1-dice系数Diceloss=1−DiceCoefficientDice loss = 1-Dice CoefficientDiceloss=1−DiceCoeffic原创 2022-04-14 14:30:09 · 3128 阅读 · 0 评论 -
语义分割损失函数系列(2):IoU损失
交叉熵损失函数好用是好用,但当数据存在严重的不平衡问题的时候,会导致结果特别糟糕,特别是在医学图像分割问题中,一般目标区域都比较小,背景区域比较大,此时用交叉熵损失函数的话得到的结果就不太好。IOU loss介绍IOU即是交并比,用相交的部分去除上并集,就得到IOU的值,1-IOU的值就是IOU Loss。至于IOU的数学定义去看百度百科吧,举个例子:上面两张图求IOU,白色区域为目标区域,就是用两张图片的白色区域的交集去比上白色部分的并集,就得到了白色类别的IOU值。在实际工程中,一般黑色像素为类原创 2022-03-25 00:21:01 · 3799 阅读 · 3 评论 -
Pytorch 使用Grad-CAM可视化网络模型的特征图
介绍虽然说咱也不知道这个Grad-CAM的数学理论是如何推导的,但是在看论文的时候发现很多论文里面都用了Grad-CAM来可视化模型的特征图,用来显示网络对ROI区域的捕捉。想详细了解的话看一下B站大佬噼里啪啦的讲解视频。推荐代码code:https://github.com/jacobgil/pytorch-grad-cam安装pytorch-grad-cam :pip install grad-cam官方给的例子:自己的尝试我试着使用这个仓库来可视化我的vit模型,做的是一个五分类的原创 2022-03-23 15:56:00 · 16292 阅读 · 4 评论 -
语义分割损失函数系列(1):交叉熵损失函数
最近一直在做一些语义分割相关的项目,找损失函数的时候发现网上这些大佬的写得各有千秋,也没说怎么用,在此记录一下自己在训练过程中使用损失函数的一些心得.本人是使用的Pytorch框架,故这一系列都会基于Pytorch来实现。首先是交叉熵损失函数,语义分割其实是一个逐像素分类的一个分类问题,做过图像分类的应该都比较熟悉交叉熵损失函数。pytorch中自带有写好的交叉熵函数,只需要调用就行:loss_func = nn.CrossEntropyLoss()torch.nn模块中写好的损失函数都是以类的方原创 2022-02-22 22:32:01 · 5757 阅读 · 4 评论 -
python读取dicom格式的图像并转为png格式
使用网上的大多数格式转换过来图像失真过于严重,出现了这种情况:而原始图像是:读取的过程中直接变成了二值图,所以就先对读取到的原始像素矩阵做归一化,在*255变为灰度图,代码如下:import SimpleITK as sitKimport numpy as npimport cv2import osdef convert_from_dicom_to_png(img,low_window,high_window,save_path): lungwin = np.array([low_原创 2022-01-18 10:47:28 · 6391 阅读 · 1 评论 -
python nrrd图像转png
最近在做医学图像相关的实践,数据集图像是dicom格式的,标注是nrrd格式的图像.为了方便后期的模型搭建和训练转一下格式.python读取nrrd格式的图像需要用到pynrrd库,使用pip就可以安装:pip install pynrrd核心代码:import numpy as npimport nrrdimport osimport cv2def nrrd_to_png(nrrd_filename,save_path,patient_id): nrrd_filename = n原创 2022-01-18 01:46:11 · 4203 阅读 · 6 评论 -
python opencv给证件照换底色
昨天朋友忙要把白色背景的证件照换为红色的,比较急用,本人也不太会用PS,网上的那些转换小工具都是要收费的,就想着自己搞一搞,原理很简单,白色背景的像素值为[255,255,255],用这个信息生成mask,再将生成的Mask对应回原图像将背景区域换为红色的像素值[256,0,0]即可实现。read imagedef read_source_image(image_path): img = cv2.imread(image_path) return imgresizedef resi原创 2021-12-12 20:21:24 · 2771 阅读 · 0 评论 -
OPENCV-PYTHON将.GIF格式的图像转为PNG格式
在做UNET的眼球血管分割的时候,眼球的标注使用的gif格式存储的,习惯了使用jpg或者png了,先转一下。直接用opencv读进来以后重写一下就可以。gif读取的时候要使用VideoCapture,因为GIF是动图。# !/usr/bin/python3# -*- coding:utf-8 -*-# Author:WeiFeng Liu# @Time: 2021/12/9 下午6:54import numpy as npimport cv2import osdef gif_to_png(原创 2021-12-10 08:46:43 · 1801 阅读 · 0 评论 -
opencv-python将.tif格式的图像转为png格式
在做UNET的眼球血管分割的时候,眼球的图像使用的tif格式存储的,习惯了使用jpg或者png了,先转一下。直接用opencv读进来以后重写一下就可以。# !/usr/bin/python3# -*- coding:utf-8 -*-# Author:WeiFeng Liu# @Time: 2021/12/9 下午6:41import cv2import numpy as npimport osdef tif_to_png(image_path,save_path): """原创 2021-12-10 08:44:01 · 6695 阅读 · 4 评论 -
opencv-python将视频切分成帧
原始视频是41秒,每秒30帧,opencv提供了简单的实现来切分视频。代码:# !/usr/bin/python3# -*- coding:utf-8 -*-# Author:WeiFeng Liu# @Time: 2021/12/9 上午8:19import cv2import globimport osdef video_to_frame(save_path,video_path): # save_path : frame save path # video_path原创 2021-12-09 08:35:19 · 1253 阅读 · 0 评论 -
opencv-python将视频帧还原成视频
最近在做一些分割的项目,拿视频来做分割测试,在做分割时是一帧一帧的读进去的,出来的结果也是离散的视频帧。所以就有这个需求:原始帧序列:从第一帧到最后一帧依次存起来的。从这些分割借过帧中还原视频,opencv提供了简单的实现:# !/usr/bin/python3# -*- coding:utf-8 -*-# Author:WeiFeng Liu# @Time: 2021/12/2 上午9:59import cv2import globimport osdef frames_to_v原创 2021-12-02 13:26:30 · 3766 阅读 · 0 评论 -
Pytorch:使用Alexnet网络实现CIFAR10分类
全部代码: https://github.com/SPECTRELWF/pytorch-cnn-study网络介绍:Alexnet网络是CV领域最经典的网络结构之一了,在2012年横空出世,并在当年夺下了不少比赛的冠军,下面是Alexnet的网络结构:网络结构较为简单,共有五个卷积层和三个全连接层,原文作者在训练时使用了多卡一起训练,具体细节可以阅读原文得到。Alexnet文章链接:http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf作者在网络中原创 2021-11-05 15:34:57 · 3431 阅读 · 1 评论 -
python读取CIFAR10数据集并将数据集转换为PNG格式存储
CIFAR10数据集介绍CIFAR10数据集包括10类图像,每张图像的大小为32*32,包含如上图的十个类别的对象。每个类都包含6000张图片,总共有60000张图片,数据集平衡。其中,训练组图像包含50000张图片,测试集包含10000张图像。数据集的下载数据集地址:http://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz也可以使用pytorch中的方法来获取数据集:trainset = torchvision.datasets.CIFAR1原创 2021-11-05 14:09:40 · 1610 阅读 · 4 评论 -
python opencv实现目标区域裁剪
这个任务是自己在项目中数据处理的一部分内容,待处理的图片如下所示:我需要将目标区域给裁剪出来,要不然在后期训练网络的时候整幅图像过大,且目标区域过小,得到结果不好,还会加剧计算量。在网上找了各个大佬的博客看,没找到合适的,便自己动手写了,顺便自己的小破站刚搭建起来,记录一下自己的思路。思路去寻找目标区域的最左边,最右边,最上面和最下面的像素点,取到坐标信息以后用CV2的裁剪一下就可以实现了。#难点数据总共是11952张图片,每张图片是1024*768大小的,依次去遍历的话担心太费时间了,结果还好,原创 2021-07-29 21:23:56 · 7182 阅读 · 6 评论 -
python将灰度图转换为RGB彩色图
代码如下:from PIL import Imageimport ospath = r'图片存储的路径'newpath = r'转换后存储图片的路径'def RGBtoGray(path): files = os.listdir(path) for file in files: imgpath = path + '/' + file #print(imgpath) # im = Image.open(imgpat原创 2021-11-12 13:08:45 · 17181 阅读 · 10 评论 -
python将图片转换为灰度图
灰度图的位深度为8,此代码使用PIL库中的convert函数进行转换。convert函数的参数解释:1 ------------------(1位像素,黑白,每字节一个像素存储)L ------------------(8位像素,黑白)P ------------------(8位像素,使用调色板映射到任何其他模式)RGB------------------(3x8位像素,真彩色)RGBA------------------(4x8位像素,带透明度掩模的真彩色)CMYK------------原创 2021-11-12 13:08:59 · 5533 阅读 · 1 评论