
图像处理
小丫么小阿豪
穆罕默德·本·扎耶德人工智能大学 硕士在读
展开
-
【图像处理】通俗解释如何求图像的梯度(图像求导)及其python代码实现
Motivation在看论文的时候看到了对图像求梯度的结果,一下子没反应过来到底怎么做的,于是学习了一下。通俗解释前置知识首先,开始之前默认大家学过《高等数学》和《信号与系统》,对导数和差分有最基本的认识。如果没有的话,请移步了解导数和差分的概念。对于一个连续函数,对应位置的梯度就是该点的导数(微分);而对于离散序列来说,某点的导数实际是和相邻点的差分。(这里可能需要大家回忆一下信号与系统里讲过的序列差分的概念)对于数字图像,我们就可以把它视作离散序列集合,只不过它有两个维度而已。如果我们把图原创 2022-04-15 17:41:45 · 6408 阅读 · 0 评论 -
【图像处理】图像离散小波变换(Discrete Wavelet Transform)及python代码实现
Motivation看到有论文用到了图像的Haar Discrete Wavelet Transform(HDWT),前面也听老师提到过用小波变换做去噪、超分的文章,于是借着这个机会好好学习一下。直观理解参考知乎上的这篇文章:https://zhuanlan.zhihu.com/p/22450818 关于傅立叶变换和小波变换的直观概念解释的非常清楚(需要对傅立叶变换有基本的理解)二维图像离散小波变换(DWT)先放一张图直观感受一下这个过程(图中是经过两次DWT的)1. 首先明确什么是H和L。H和原创 2022-04-13 15:42:08 · 34183 阅读 · 14 评论 -
【图像处理】gamma校正通俗解释及python实现(替代matlab imadjust)
Motivation之前把matlab代码转python的时候转过这个函数。最近自己动手发现还会用到,遂贴上来方便有需要的朋友们自取。Gamma校正(gamma correction)一句话解释:其实就是说,在人眼看来,亮度并不是线性变化的(对深色更敏感),所以需要做一个映射,来让人眼感觉色彩是均匀变化的。这个映射就是所谓的gamma校正。我们看下面这张图,左边在亮度上其实是均匀变化的,但是在我们人眼看来,深色数量远多于亮色。通过一个非线性校正后(右图),我们人眼看来就是均匀变化的了。这也就是gam原创 2022-04-08 10:58:06 · 6817 阅读 · 0 评论 -
【图像处理】python常用图像读取和保存方法。(PIL、cv2、scipy 、skimage)
PIL(Python Imaging Library)import numpy as npfrom PIL import Image# read imageraw_image = Image.open("xxx.jpg")# image to arrayimage_array = np.array(image_resize)# array to imageimage_output = Image.fromarray(image_array)# save imageimage_outpu原创 2022-04-07 20:06:39 · 3335 阅读 · 0 评论 -
【图像处理】RGB、YUV (YCbCr) 图像表示详解
RGBRGB图像表示是我们最常见的一种图像表示方式。这个非常好理解,三原色可以构成所有颜色,因此通过R、G、B三个通道的组合,就可以构成一张色彩丰富的图片。下面这张图可以直观感受一下RGB图像表示从原点到最大值点的连线,就是我们熟知的灰度表示。YUV(YCbCr)RGB大约可以表示一千六百七十万种颜色,而人眼大约可以分辨一千万种颜色。因此使用RGB来储存和传输图像会造成很大的空间浪费。为了克服这一问题,YUV于上世纪50年代提出,用于储存和传输电视信号。YCbCr也由三个通道组成:Y通原创 2022-04-07 19:47:11 · 12837 阅读 · 5 评论 -
【图像处理】[::-1]替代方法,及图片旋转(rotate)固定角度
Motivation在早期版本的pytorch中,torchvision.transforms.functional.rotate()只支持输入是PILimage格式,不支持tensor格式。如果你试图把tensor转成PILimage,网络里又会给你报出各种各样奇奇怪怪的错误。比如:pic should be Tensor or ndarray. Got <class 'torch.Tensor'>.、需要把tensor从GPU里copy出来等。所以干脆心一横,自己写一个吧…[::-1]替原创 2022-04-01 21:19:59 · 2499 阅读 · 2 评论 -
【图像处理】均值漂移(mean shift)及深度学习超分辨代码中的mean shift
均值漂移(mean shift)均值漂移是一种聚类算法,常用于特征点聚类、图像分割、对象轮廓检验、目标跟踪等。这里简单直观介绍一下这个算法大概是怎么回事。基本概念基本概念可以看下面这个图。左面是一堆像素点特征的分布(其实也不用管他是啥,只要当成一堆点就好了),我们可以看到这堆点有的地方密集,有的地方稀疏。把点的密度分布可视化之后就是右边这个图,大概可以理解为点的密度函数三维可视化。这样就可以看到,会存在几个极值点,也就是红色的点。好,看到这里你其实就已经理解这个算法的一大半了。这个算法的操作直观来原创 2022-03-25 23:59:41 · 5069 阅读 · 5 评论 -
【图像处理】tif格式的图像栈(image stack)导入及详细解释
不多废话,直接看代码from skimage import ioimg_stack = io.imread("your path here")是不是很easy?这里多啰嗦一点帮助大家理解如果你的tiff格式是一个图像栈的话,那么io.imread读入的实际应该是一个三维数组,其shape应该为(z, y, x)。其中,z表示的是图像层数,也就是表示你这个tiff文件是多少个图像叠在一起的;y表示图像高度;x表示图像宽度。如果你希望得到其他面的图像,可以将数组投影到你需要的那个面上(一般是均值或原创 2022-03-25 23:16:16 · 6854 阅读 · 9 评论 -
【图像处理】python生成二维isotropic(各向同性)、anisotropic(各向异性) 高斯核
Motivation需要自己做个各向异性的高斯核来处理图像,查了下没有看到特别好的实现,于是自己动手写了一个。代码实现比较简单,生成高斯核的部分借鉴了外网的一篇博客。如果要产生一个椭圆形的分布(各向不同性),直接在对应的轴上做下采样就好了。设置了比较多的参数,注释解释的很详细,直接参考就好了。import osimport numpy as npfrom scipy import io as siodef gaussian_2d(muu=0.0, sigma=1, start=-2, en原创 2022-03-24 23:46:36 · 3163 阅读 · 0 评论 -
【图像处理】如何根据给定Kernel进行图像下采样?图像下采样方法解释及代码实现
Motivation有个小想法,需要自己做个根据kernal生成低分辨数据的函数,查了查没找到有现成的方法。于是参考一些别人的代码自己写了一个。原理根据Kernel进行下采样其实就是两步,第一步将Kernel作用于图像(一般是相关,深度学习里的卷积实际是数学上的相关),第二步下采样。图片来源:论文Deep Slam实现功能:根据给定的kernel进行不同倍数下采样from scipy import ndimage# 保证像素数可以整除def modcrop(im, sf):原创 2022-03-23 18:37:45 · 4902 阅读 · 0 评论 -
【Matplotlib】plt.imshow() cmap色彩表
参数和色卡对应如下官方文档:https://matplotlib.org/stable/tutorials/colors/colormaps.html原创 2022-03-21 14:56:41 · 16001 阅读 · 0 评论 -
【Python】.mat文件读取、矩阵可视化、matplotlib子图设置title
直接上代码from matplotlib import pyplot as pltimport scipy.io# loadmat读取.mat文件,['Kernel']表示的是读取其中的矩阵部分。# .mat文件有可能读进来包含不少头信息,建议可以输出出来看一下自己要的部分到底在哪里。kernel1 = scipy.io.loadmat("xxx.mat")['Kernel']kernel2 = scipy.io.loadmat("xxx.mat")['Kernel']# 可视化,并设置t原创 2022-03-20 12:59:59 · 7224 阅读 · 1 评论 -
【opencv】图片文件格式转换(以jpg,png为例)
import cv2img = cv2.imread("xxx.jpg")cv2.imwrite("xxx.png", img)原创 2022-03-18 19:36:15 · 3872 阅读 · 0 评论 -
【Opencv】一文搞懂PIL、cv2、pyplot.imshow()显示图片颜色/色彩偏差问题
原始图片这里用眼底血管分割数据集的图片作为例子导入图片方法及通道区别PIL:from PIL import Imagefrom matplotlib import pyplot as plt# PIL输入通道为RGBimg = Image.open("xxx.tif")# plt.imshow()输出通道为RGBplt.imshow(img)plt.show()cv2:import cv2from matplotlib import pyplot as plt# cv原创 2022-03-21 14:42:40 · 5668 阅读 · 0 评论