python分块处理功能_Python-numpy实现灰度图像的分块和合并方式

本文介绍如何使用Python的numpy库对灰度图像进行分块处理和合并操作。通过设定分块大小和间距,将图像切割成多个小块,并分别保存,最后展示如何将这些小块重新组合成原始图像。此过程涉及到图像处理的基础知识和numpy数组操作。
摘要由CSDN通过智能技术生成

今天小编就为大家分享一篇Python-numpy实现灰度图像的分块和合并方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

我就废话不多说了,直接上代码吧!

from numpy import *

import numpy as np

import cv2, os, math, os.path

from PIL import Image

base="F:\\Spy_CNN\\pythonCode\\cvSPY\\cvTest\\LBP\\LBPImag3\"

base2="F:\\ProgrameCode\\FaceDataLib\\orl_Arry\"

imageOld=cv2.imread(base2+"s1_1.bmp")

image=cv2.cvtColor(imageOld,cv2.COLOR_BGR2GRAY)

'''图像的合成'''

H,W=image.shape#(112, 92)

kuai=5

a=1#为了好调程序

maskx,masky = H/kuai,W/kuai #29 14

toImage=np.zeros((H+(kuai-1)*a,W+(kuai-1)*a))

toImage.shape

#您画画图,总结规律,就可以想出来了

for i in range(kuai):

for j in range(kuai):

'''float64 array'''

faceZi=image[int(i*maskx): int((i+1)*maskx),int(j*masky) :int((j+1)*masky)]

cv2.imwrite(base+str(i)+str(j)+".bmp",faceZi)

# toImage[int(i*maskx)+a: int((i+1)*maskx)+a,int(j*masky)+a :int((j+1)*masky)+a]=faceZi

toImage[int(i*maskx)+i: int((i+1)*maskx)+i,int(j*masky)+j :int((j+1)*masky)+j]=faceZi

cv2.imwrite(base+"toImage.bmp",toImage)

#最简单的,直接在灰度图像上画出一条黑线,只是会丢失一些像素的数据

for i in range(1,kuai):

print(i)

toImage[int(i*maskx),:]=0

toImage[:,int(i*masky)]=0

cv2.imwrite(base+"toImage.bmp",toImage)

以上这篇Python-numpy实现灰度图像的分块和合并方式就是小编分享给大家的全部内容了,希望能给大家一个参考,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目标检测(Object Detection)是计算机视觉领域的一个核心问题,其主要任务是找出图像中所有感兴趣的目标(物体),并确定它们的类别和位置。以下是对目标检测的详细阐述: 一、基本概念 目标检测的任务是解决“在哪里?是什么?”的问题,即定位出图像中目标的位置并识别出目标的类别。由于各类物体具有不同的外观、形状和姿态,加上成像时光照、遮挡等因素的干扰,目标检测一直是计算机视觉领域最具挑战性的任务之一。 二、核心问题 目标检测涉及以下几个核心问题: 分类问题:判断图像中的目标属于哪个类别。 定位问题:确定目标在图像中的具体位置。 大小问题:目标可能具有不同的大小。 形状问题:目标可能具有不同的形状。 三、算法分类 基于深度学习的目标检测算法主要分为两大类: Two-stage算法:先进行区域生成(Region Proposal),生成有可能包含待检物体的预选框(Region Proposal),再通过卷积神经网络进行样本分类。常见的Two-stage算法包括R-CNN、Fast R-CNN、Faster R-CNN等。 One-stage算法:不用生成区域提议,直接在网络中提取特征来预测物体分类和位置。常见的One-stage算法包括YOLO系列(YOLOv1、YOLOv2、YOLOv3、YOLOv4、YOLOv5等)、SSD和RetinaNet等。 四、算法原理 以YOLO系列为例,YOLO将目标检测视为回归问题,将输入图像一次性划分为多个区域,直接在输出层预测边界框和类别概率。YOLO采用卷积网络来提取特征,使用全连接层来得到预测值。其网络结构通常包含多个卷积层和全连接层,通过卷积层提取图像特征,通过全连接层输出预测结果。 五、应用领域 目标检测技术已经广泛应用于各个领域,为人们的生活带来了极大的便利。以下是一些主要的应用领域: 安全监控:在商场、银行
好的,下面是使用Python代码实现图像的直方图均衡,分别包括基本均衡算法、分块均衡算法和局部均衡: 首先,我们需要导入必要的库和读取一张待处理的图片: ```python import cv2 import numpy as np import matplotlib.pyplot as plt img = cv2.imread('lena.jpg', 0) ``` 接下来,我们先实现基本均衡算法。对于一幅灰度图像,其直方图为图像中每个灰度级出现的频率。我们可以通过计算每个灰度级出现的概率来得到直方图。然后,将直方图归一化后,再通过累计概率得到新的灰度级。最后,将新的灰度级映射回原图像中即可。 ```python def basic_histogram_equalization(img): hist, bins = np.histogram(img.flatten(), 256, [0, 256]) cdf = hist.cumsum() cdf_normalized = cdf * hist.max() / cdf.max() img_equalized = np.interp(img.flatten(), bins[:-1], cdf_normalized) img_equalized = img_equalized.reshape(img.shape) return img_equalized.astype('uint8') img_basic_eq = basic_histogram_equalization(img) ``` 下面,我们来实现分块均衡算法。这种方法将图像划分成多个子块,然后对每个子块进行直方图均衡。这样可以减少计算量,减小直方图不均衡的影响。 ```python def block_histogram_equalization(img, block_size=16): img_equalized = np.zeros_like(img) h, w = img.shape for i in range(0, h, block_size): for j in range(0, w, block_size): block = img[i:i+block_size, j:j+block_size] block_equalized = basic_histogram_equalization(block) img_equalized[i:i+block_size, j:j+block_size] = block_equalized return img_equalized.astype('uint8') img_block_eq = block_histogram_equalization(img) ``` 最后,我们来实现局部均衡算法。这种方法将图像分成若干个局部区域,然后在每个局部区域内进行直方图均衡。这样可以保留图像的细节信息,同时避免过度增强图像的高频内容。 ```python def local_histogram_equalization(img, kernel_size=(3, 3)): img_equalized = np.zeros_like(img) h, w = img.shape k_h, k_w = kernel_size for i in range(h): for j in range(w): i_min = max(i-k_h//2, 0) i_max = min(i+k_h//2, h-1) j_min = max(j-k_w//2, 0) j_max = min(j+k_w//2, w-1) block = img[i_min:i_max+1, j_min:j_max+1] block_equalized = basic_histogram_equalization(block) img_equalized[i, j] = block_equalized[k_h//2, k_w//2] return img_equalized.astype('uint8') img_local_eq = local_histogram_equalization(img) ``` 最后,我们可以将原图像和三种直方图均衡的结果进行可视化比较: ```python plt.figure(figsize=(10, 10)) plt.subplot(2, 2, 1) plt.imshow(img, cmap='gray') plt.title('Original Image') plt.axis('off') plt.subplot(2, 2, 2) plt.imshow(img_basic_eq, cmap='gray') plt.title('Basic Histogram Equalization') plt.axis('off') plt.subplot(2, 2, 3) plt.imshow(img_block_eq, cmap='gray') plt.title('Block Histogram Equalization') plt.axis('off') plt.subplot(2, 2, 4) plt.imshow(img_local_eq, cmap='gray') plt.title('Local Histogram Equalization') plt.axis('off') plt.show() ``` 运行代码后,就可以看到原图像和三种直方图均衡的结果了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值