首页 科技内容详情
kiếm tiền tại nhà:OpenCV:直方图均衡

kiếm tiền tại nhà:OpenCV:直方图均衡

分类:科技

标签: # 新2足球信用平台出租

网址:

SEO查询: 爱站网 站长工具

点击直达

登1登2登3代理www.99cx.vip)实时更新发布最新最快最有效的登1登2登3代理网址,包括新2登1登2登3代理手机网址,新2登1登2登3代理备用网址,皇冠登1登2登3代理最新网址,新2登1登2登3代理足球网址,新2网址大全。

步骤:

第 1 步:手动均衡

第 2 步:通过使用 OpenCV 函数

什么是图像直方图?

它是图像强度分布的图形表示。它量化了所考虑的每个强度值的像素数。

第 1 步:手动均衡

%matplotlib inline

from IPython.display import display, Math, Latex

import numpy as np

import matplotlib.pyplot as plt

from PIL import Image

img = Image.open('DATA/einstein.jpg')

plt.imshow(img)

输出:


显示彩色图像

将图像转换为 numpy 数组,以便 OpenCV 可以使用:

img = np.asanyarray(img)

img.shape

输出:

(2354, 2560, 3)

将 RGB 转换为灰度:

import cv2

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

img.shape

输出:

(2354, 2560)

显示图像:

plt.imshow(img, cmap='gray')

输出:


我们现在知道如何处理直方图了

img.max()

输出:

255

img.min()

输出:

0

img.shape

输出:

(2354, 2560)

把它展平:

flat = img.flatten()

# 1 row 2354 x 2560 = 6.026.240

flat.shape

输出:

(6026240,)

显示直方图

plt.hist(flat, bins=50)

请注意,灰度值在某个值周围分布很差

什么是直方图均衡?

为了更清楚,从上图中,你可以看到像素似乎聚集在可用强度范围的中间。直方图均衡所做的就是扩大这个范围。

# formula for creating the histogram

display(Math(r'P_x(j) = sum_{i=0}^{j} P_x(i)'))

# create our own histogram function

def get_histogram(image, bins):

   # array with size of bins, set to zeros

   histogram = np.zeros(bins)

   # loop through pixels and sum up counts of pixels

   for pixel in image:

       histogram[pixel] += 1

       # return our final result

       return histogram

hist = get_histogram(flat, 256)

plt.plot(hist)

[ ]

# create our cumulative sum function

def cumsum(a):

  a = iter(a)

  b = [next(a)]

  for i in a:

   b.append(b[-1] + i)

   return np.array(b)
   

# execute the fn

cs = cumsum(hist)

,

Kiếm tiền từ(www.84vng.com):Kiếm tiền từ(www.84vng.com) cổng Chơi tài xỉu uy tín nhất việt nam。Kiếm tiền từ(www.84vng.com)game tài Xỉu đánh bạc online công bằng nhất,Kiếm tiền từ(www.84vng.com)cổng game không thể dự đoán can thiệp,mở thưởng bằng blockchain ,đảm bảo kết quả công bằng.

,


# display the result

plt.plot(cs)

[ ]

# formula to calculate cumulation sum

display(Math(r's_k = sum_{j=0}^{k} { rac{n_j}{N}}'))

# re-normalize cumsum values to be between 0-255

# numerator & denomenator

nj = (cs - cs.min()) * 255

N = cs.max() - cs.min()

# re-normalize the cdf

cs = nj / N

plt.plot(cs)

[ ]


Casting:

# cast it back to uint8 since we can't use floating point values in imagescs =

cs.astype('uint8')

plt.plot(cs)

输出:

[ ]

获取 CDF:

# get the value from cumulative sum for every index in flat, and set that as img_new

img_new = cs[flat]

# we see a much more evenly distributed histogram

plt.hist(img_new, bins=50)

它是如何工作的?

均衡意味着将一个分布(给定的直方图)映射到另一个分布(强度值的更广泛和更均匀的分布),因此强度值分布在整个范围内。

# get the value from cumulative sum for every index in flat, and set that as img_new

img_new = cs[flat]

# we see a much more evenly distributed histogram

plt.hist(img_new, bins=50)

# put array back into original shape since we flattened it

img_new = np.reshape(img_new, img.shape)

img_new

输出:

array([[233, 231, 228, ..., 216, 216, 215],

      [233, 230, 228, ..., 215, 215, 214],

      [233, 231, 229, ..., 213, 213, 212],

      ...,

      [115, 107,  96, ..., 180, 187, 194],

      [111, 103,  93, ..., 187, 189, 192],

      [111, 103,  93, ..., 187, 189, 192]], dtype=uint8)

一探究竟:

# set up side-by-side image display

fig = plt.figure()

fig.set_figheight(15)

fig.set_figwidth(15)

fig.add_subplot(1,2,1)

plt.imshow(img, cmap='gray')

# display the new image

fig.add_subplot(1,2,2)

plt.imshow(img_new, cmap='gray')

plt.show(block=True)

使用 OpenCV equalizeHist(img) 方法

第 2 步:通过使用 OpenCV 函数

# Reading image via OpenCV and Equalize it right away!

img = cv2.imread('DATA/einstein.jpg',0)

equ = cv2.equalizeHist(img)

准备好!这就是你需要做的!

fig = plt.figure()

fig.set_figheight(15)

fig.set_figwidth(15)

fig.add_subplot(1,2,1)

plt.imshow(img, cmap='gray')

# display the Equalized (equ) image

fig.add_subplot(1,2,2)

plt.imshow(equ, cmap='gray')

plt.show(block=True)

print("That?s it! Thank you once again!I hope will be helpful.")

输出:

That?s it! Thank you once again!

I hope will be helpful.

       原文标题 : OpenCV:直方图均衡

,

kiếm tiền tại nhà(www.vng.app):kiếm tiền tại nhà(www.vng.app) cổng Chơi tài xỉu uy tín nhất việt nam。kiếm tiền tại nhà(www.vng.app)game tài Xỉu đánh bạc online công bằng nhất,kiếm tiền tại nhà(www.vng.app)cổng game không thể dự đoán can thiệp,mở thưởng bằng blockchain ,đảm bảo kết quả công bằng.

 当前暂无评论,快来抢沙发吧~

发布评论