如何将图像分成多个部分,应用直方图均衡化,从各个部分组成图像并显示

时间:2019-03-31 16:16:22

标签: python opencv image-processing

我试图找到一种将图像拆分为定义的部分的方法,以便对每个部分应用直方图均衡化。 必须重新组合这些部分以形成先前的图像,并在应用直方图均衡化的情况下进行显示。

void insert(typename T::value_type&& element);

2 个答案:

答案 0 :(得分:1)

既然您已经找到了如何对图像进行直方图均衡的方法,那么剩下的问题就是先分割原始图像,然后再合并碎片。

OpenCV非常好,它为您提供了感兴趣区域(ROI)的概念,它是图像的一部分(定义为矩形)。出于所有实际目的,ROI可以用作图像,但是如果您对其进行修改,原始图像也将被修改。

因此,您必须提取您感兴趣的所有ROI,并对它们应用直方图均衡化。由于ROI是图像本身的一部分,因此隐式处理合并。

查看herehere,了解有关投资回报率的更多信息。

答案 1 :(得分:0)

尝试一下:

import cv2
import numpy as np

img = cv2.imread("1.jpg")
(h,w,c) = img.shape
gray_img = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

parts = []
step_x = 3
step_y = 3
eqs = []
eq_img = np.zeros_like(gray_img)

for x in range(step_x):
    for y in range(step_y):
        xratio1 = x/step_x
        xratio2 = (x+1)/step_x
        yratio1 = y/step_y
        yratio2 = (y+1)/step_y
        part = gray_img[int(yratio1*h):int(yratio2*h),int(xratio1*w):int(xratio2*w)].copy()
        parts.append(part)

        cv2.imshow("x = {0}, y = {1}".format(x,y),part)

        eq = cv2.equalizeHist(part)
        eqs.append(eq)
        eq_img[int(yratio1*h):int(yratio2*h),int(xratio1*w):int(xratio2*w)] = eq

cv2.imshow("eq_img",eq_img)
cv2.waitKey(0)

enter image description here enter image description here