基于Numpy图像处理(python)
卷积,去噪,边缘提取......
陨星落云
这个作者很懒,什么都没留下…
展开
-
复制指定图像到指定文件夹下
在制作数据集的过程中,为了保证训练样本的类别平衡,挑选了根据标签一部分样本,但是再去找对应的影像特别费劲。(注意样本标签最坏命名一样)写个脚本批量寻找对应影像:import shutilimport numpy as npdef copyimgs(sourcePath,targetPath,imglist): for i in np.loadtxt(imglist,dtype=np.str_,encoding='utf-8'): objName = i s原创 2021-08-10 17:02:51 · 365 阅读 · 0 评论 -
彩色标签转数字标签,数字标签转彩色标签
# -*- coding: utf-8 -*-"""Created on Fri Aug 6 12:56:44 2021@author: xiaohuihui"""import imageioimport numpy as npimport cv2def ColorLabel2NumLabel(img,colors): # 彩色标签转数字 h,w,ch = img.shape gt = np.zeros((h,w)).astype(np.uint8)原创 2021-08-06 14:10:06 · 607 阅读 · 3 评论 -
16bit转8bit+直方图均衡化
# -*- coding: utf-8 -*-"""Created on Sun Jun 27 22:55:24 2021@author: 陨星落云csdn博客地址: https://blog.csdn.net/qq_28368377"""from osgeo import gdalimport numpy as npimport imageiodef img16to8(imgpath): scale = '-scale min_val max_val' optio原创 2021-06-27 22:58:39 · 760 阅读 · 0 评论 -
手动实现直方图匹配(python)
# -*- coding: utf-8 -*-"""Created on Fri Jun 11 06:24:33 2021@author: 陨星落云csdn博客地址: https://blog.csdn.net/qq_28368377"""import imageioimport cupy as cpimport numpy as npimport matplotlib.pylab as pltimport matplotlibmatplotlib.rcParams['font.f原创 2021-06-22 14:36:18 · 1826 阅读 · 8 评论 -
手动实现直方图均衡化
# -*- coding: utf-8 -*-"""Created on Fri Jun 11 06:24:33 2021@author: 陨星落云csdn博客地址: https://blog.csdn.net/qq_28368377"""import imageioimport cupy as cpimport numpy as npimport matplotlib.pylab as pltimport time def compute_histogram(img):原创 2021-06-22 13:31:52 · 719 阅读 · 0 评论 -
python中使用cupy对图像遍历进行优化
python图像遍历优化的方法:使用numba加速:请参考这篇文章使用GPU加速:请参考这篇文章使用numpy自带的滑动窗口进行优化:请参考这篇文章注意:这里使用as_strided 函数,原因是cupy中目前没有滑动窗口函数。as_strided 函数介绍:请参考这篇文章以中值滤波为例(使用GPU前与使用GPU后的对比)# -*- coding: utf-8 -*-"""Created on Fri Jun 20 00:24:33 2021@author: 陨星落云csdn博客地址原创 2021-06-20 00:43:51 · 1144 阅读 · 0 评论 -
手动实现直方图计算与图像拉伸(python)
# -*- coding: utf-8 -*-"""Spyder EditorThis is a temporary script file."""import numpy as npimport imageio import matplotlib.pylab as pltdef rgb2gray(img): # 灰度计算公式 gray = 0.2126*img[:,:,0] + 0.7152*img[:,:,1] + 0.0722*img[:,:,2]原创 2021-06-17 15:35:27 · 1595 阅读 · 0 评论 -
手动实现图像边界填充
Numpy 实现图像边界填充import numpy as npimport imageio import matplotlib.pylab as pltdef img_pad(img,pad_width,constantvalues): # 边界填充 img:图像,pad_width:填充宽度,constantvalues:填充值 if len(img.shape)==2: c = 1 h,w = img.shape else:原创 2021-06-13 18:58:05 · 651 阅读 · 0 评论 -
python图像遍历优化的方法总结(以中值滤波为例)
python图像遍历优化的方法:使用numba加速:请参考这篇文章使用GPU加速:请参考这篇文章今天介绍一种新的优化方法使用numpy自带的滑动窗口进行优化注意:numpy版本必须不小于1.20.0。滑动窗口函数介绍:请参考这篇文章以中值滤波为例(优化前与优化后的对比)# -*- coding: utf-8 -*-"""Created on Fri Jun 11 06:24:33 2021@author: 陨星落云csdn博客地址: https://blog.csdn.net/原创 2021-06-11 06:37:22 · 1187 阅读 · 3 评论 -
numpy中的滑动窗口函数
lib.stride_tricks.sliding_window_view(x, window_shape, axis=None, *, subok=False, writeable=False)使用给定的窗口形状将滑动窗口视图创建到阵列中。滑动或移动窗口,它滑动到阵列的所有维度,并在所有窗口位置提取阵列的子集。注意:numpy版本 必须不小于1.20.0。Parametersx:array_like从中创建滑动窗口视图的阵列。window_shape:int or tuple of原创 2021-06-11 05:51:36 · 7241 阅读 · 1 评论 -
numpy之二维、三维的滑动窗口
# -*- coding: utf-8 -*-"""Created on Fri May 21 09:51:08 2021@author: xiaohuihui"""import numpy as npdef stride_win(x,k,s): # x:数据;k:窗口大小;s:步长;num:固定数 if len(x.shape)==2: h,w = x.shape count = 0 for i in range(0,h-原创 2021-05-21 14:31:16 · 1522 阅读 · 0 评论 -
img16位转8位
"""将16位遥感图像压缩至8位,并保持色彩一致"""from osgeo import gdalimport osimport globimport numpy as npimport timedef read_tiff(input_file): """ 读取影像 :param input_file:输入影像 :return:波段数据,仿射变换参数,投影信息、行数、列数、波段数 """ dataset = gdal.Open(input_原创 2021-04-19 10:07:13 · 384 阅读 · 1 评论 -
numpy函数查询手册
创建数组函数说明1和0empty(shape[, dtype, order])返回给定形状和类型的新数组,而不初始化条目。empty_like(a[, dtype, order, subok])返回与给定数组形状和类型相同的新数组。eye(N[, M, k, dtype, order])返回对角线上为1、别处为0的二维数组。identity(n[, dtype])返回标识数组。ones(shape[, dtype, order])返回给定形状和转载 2021-02-01 10:11:47 · 966 阅读 · 0 评论 -
imageio包中的函数及支持的图像格式
In [1]: import imageioIn [2]: dir(imageio)Out[2]: ['RETURN_BYTES', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__path__', '__spec__', '__version__', 'core', 'formats', 'get_reader', 'get_原创 2021-01-29 22:30:28 · 1330 阅读 · 0 评论 -
彩色rgb图像拆分为rgb三个通道,并重新合并为彩色图像
import numpy as npimport imageioimport matplotlib.pyplot as pltimg = imageio.imread(r'E:\Vaihingen\data\orginalimages\top_mosaic_09cm_area1.tif')# 将图像拆分为r,g,br,g,b = np.dsplit(img,3)plt.figure(figsize=(20,10),dpi= 80)plt.subplot(131)plt.imshow原创 2021-01-29 19:34:25 · 9152 阅读 · 0 评论 -
将影像进行分块处理
# -*- coding: utf-8 -*-"""Created on Fri Jan 29 16:05:36 2021@author: xiaohuihui"""import numpy as npimport imageioimport matplotlib.pyplot as plt# print(img)# rows = 13# cols = 11# xBSize = 5# yBSize = 5def Get_Block_Size(img,yBSize,xB原创 2021-01-29 19:20:02 · 462 阅读 · 0 评论 -
图像对齐
在本文中,我们将学习如何使用OpenCV执行基于特征的图像对齐。我们将通过一个示例演示这些步骤,其中将使用手机拍摄的表格照片与表格模板对齐。我们将使用的技术通常称为“基于特征的”图像对齐,因为在此技术中,一幅图像中检测到一组稀疏特征,并与另一幅图像中的特征匹配。然后根据这些匹配的特征(将一张图像扭曲到另一张图像)计算出一个转换。什么是图像对齐或图像配准?在许多应用程序中,我们具有相同场景或相同文档的两个图像,但是它们没有对齐。换句话说,如果您在一幅图像上选择一个要素(例如一个角点),则另一幅图像中相同原创 2020-08-10 17:29:55 · 7054 阅读 · 2 评论 -
手动实现最大池化
最大池化(Max Pooling)网格内的值不取平均值,而是取网格内的最大值进行池化操作。import imageioimport numpy as npimport matplotlib.pylab as pltimg = imageio.imread("imori.jpg")s = 8rows,cols,C = img.shapenrows = int(rows/s)ncols = int(cols/s)img1 = np.zeros((nrows,ncols,C),np.uin原创 2020-07-30 22:05:40 · 758 阅读 · 0 评论 -
手动实现平均池化
平均池化(Average Pooling)将图片按照固定大小网格分割,网格内的像素值取网格内所有像素的平均值。我们将这种把图片使用均等大小网格分割,并求网格内代表值的操作称为池化(Pooling)。池化操作是**卷积神经网络(Convolutional Neural Network)**中重要的图像处理方式。平均池化按照下式定义:v=1∣R∣ ∑i=1R viv=\frac{1}{|R|}\ \sum\limits_{i=1}^R\ v_iv=∣R∣1 i=1∑原创 2020-07-30 22:03:07 · 1401 阅读 · 0 评论 -
手动实现减色处理
减色处理这里没有找到"減色処理"准确的中文翻译,所以直译了。我们将图像的值由2563256^32563压缩至434^343,即将RGB\text{RGB}RGB的值只取{32,96,160,224}\{32, 96, 160, 224\}{32,96,160,224}。这被称作色彩量化。色彩的值按照下面的方式定义:val={32(0≤var<64)96(64≤var<128)160(128≤var<192)224(192≤var<256)\text{val}=\begin{c原创 2020-07-30 21:38:54 · 333 阅读 · 0 评论 -
手动实现均值滤波(python)
使用3×33\times33×3的均值滤波器来进行滤波!均值滤波器使用网格内像素的平均值。代码实现:# -*- coding: utf-8 -*-"""Created on Sat Jul 12 15:43:28 2020@author: 陨星落云"""import imageioimport numpy as npimport matplotlib.pylab as pltdef MeanFilter(img,K_size=3): # 均值滤波 h,w,c =原创 2020-07-12 15:49:06 · 6435 阅读 · 2 评论 -
手动实现伽马校正(python)
对lena.jpg进行伽马校正(c=1c=1c=1,g=2.2g=2.2g=2.2)!伽马校正用来对照相机等电子设备传感器的非线性光电转换特性进行校正。如果图像原样显示在显示器等上,画面就会显得很暗。伽马校正通过预先增大 RGB 的值来排除显示器的影响,达到对图像修正的目的。由于下式引起非线性变换,在该式中,xxx被归一化,限定在[0,1][0,1][0,1]范围内。ccc是常数,ggg为伽马变量(通常取2.22.22.2):x′=c Iingx' = c\ {I_{in}}^ gx′原创 2020-07-12 15:24:43 · 1830 阅读 · 2 评论 -
手动实现中值滤波(python)
# -*- coding: utf-8 -*-"""Created on Sat Jul 12 14:53:28 2020@author: 陨星落云"""import imageioimport numpy as npimport matplotlib.pylab as pltdef MedianFilter(img,K_size=3): # 中值滤波 h,w,c = img.shape # 零填充 pad = K_size//2 o原创 2020-07-12 15:06:45 · 3091 阅读 · 0 评论 -
python遍历灰度图像像素方法总结
import numpy as npimport matplotlib.pyplot as pltimport cv2import timeimg = cv2.imread('lena.jpg',0)# 以遍历每个像素取反为例# 方法1t1 = time.time()img1 = np.copy(img)rows,cols = img1.shape[:2]for row ...原创 2020-03-01 11:19:35 · 6666 阅读 · 0 评论 -
手动实现图像二值化(python)
二值化是将图像使用黑和白两种颜色表示的方法。我们将灰度的阈值设置为128128128来进行二值化,即:y={0(ify<128)255(else)y=\begin{cases}0& (\text{if}\quad y < 128) \\255& (\text{else})\end{cases}y={0255(ify<128)(else)代码实现:# -*- coding: utf-8 -*-"""Created on Sat Jul 11 14:53:2原创 2020-07-11 21:12:58 · 1580 阅读 · 0 评论 -
实现RGB图像转BGR图像(python)
# -*- coding: utf-8 -*-"""Created on Sat Jul 11 14:53:28 2020@author: 陨星落云"""import imageioimport numpy as np# 读取图像img = imageio.imread("lena.jpg")# RGB转BGRbgr_img = img[:,:,::-1]# 保存结果imageio.imsave("bgr_img.jpg", bgr_img)结果:...原创 2020-07-11 20:53:12 · 2830 阅读 · 0 评论 -
手动实现RGB图像转灰度图像(python)
RGB转灰度图# -*- coding: utf-8 -*-"""Created on Sat Jul 11 14:53:28 2020@author: 陨星落云"""import imageioimport numpy as np# 读取图像img = imageio.imread("lena.jpg")# 图像的尺寸通道h,w,ch,w,c = img.shape# 灰度计算公式gray = 0.2126*img[:,:,0] + 0.7152*img[:,:,1] +原创 2020-07-11 20:46:14 · 1737 阅读 · 0 评论 -
手动实现高斯滤波(python)
手动实现高斯滤波# -*- coding: utf-8 -*-"""Created on Sat Jul 11 14:53:28 2020@author: 陨星落云"""import imageioimport numpy as npdef GaussianFilter(img): h,w,c = img.shape # 高斯滤波 K_size = 3 sigma = 1 # 零填充 pad = K_size//2原创 2020-07-11 18:08:08 · 6393 阅读 · 4 评论