校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 基于OpenCV的直方圖匹配的實現方法

基于OpenCV的直方圖匹配的實現方法

熱門標簽:清遠360地圖標注方法 在哪里辦理400電話號碼 原裝電話機器人 江蘇客服外呼系統廠家 千陽自動外呼系統 400電話申請服務商選什么 平頂山外呼系統免費 西藏智能外呼系統五星服務 工廠智能電話機器人

如何為圖像生成直方圖,如何使直方圖相等,最后如何將圖像直方圖修改為與其他直方圖相似。

01. 什么是圖像直方圖?

在開始定義直方圖之前,為簡單起見我們先使用灰度圖像,稍后再解釋彩色圖像的處理過程。

圖像直方圖表示圖像的像素分布情況。換言之,圖像直方圖顯示具有特定像素值的圖像點數量。例如,假設正常圖像的像素強度在0到255之間變化。為了生成其直方圖,我們只需要計算像素值為0的像素數量,然后計算1并繼續到255即可。在圖1中,我們有一個5 * 5的樣本圖像,我們通過計算每個像素強度的數量來創建直方圖表。

圖1:生成圖像直方圖的過程

02. 如何生成圖像直方圖?

在python中,我們可以使用以下兩個函數來創建然后顯示圖像的直方圖。

import matplotlib.pyplot as plt
import numpy as np
 
 
def generate_histogram(img, do_print):
  """
  @params: img: can be a grayscale or color image. We calculate the Normalized histogram of this image.
  @params: do_print: if or not print the result histogram
  @return: will return both histogram and the grayscale image 
  """
  if len(img.shape) == 3: # img is colorful, so we convert it to grayscale
    gr_img = np.mean(img, axis=-1)
  else:
    gr_img = img
  '''now we calc grayscale histogram'''
  gr_hist = np.zeros([256])
 
 
  for x_pixel in range(gr_img.shape[0]):
    for y_pixel in range(gr_img.shape[1]):
      pixel_value = int(gr_img[x_pixel, y_pixel])
      gr_hist[pixel_value] += 1
 
 
  '''normalizing the Histogram'''
  gr_hist /= (gr_img.shape[0] * gr_img.shape[1])
  if do_print:
    print_histogram(gr_hist, name="n_h_img", title="Normalized Histogram")
  return gr_hist, gr_img
 
 
 def print_histogram(_histrogram, name, title):
  plt.figure()
  plt.title(title)
  plt.plot(_histrogram, color='#ef476f')
  plt.bar(np.arange(len(_histrogram)), _histrogram, color='#b7b7a4')
  plt.ylabel('Number of Pixels')
  plt.xlabel('Pixel Value')
  plt.savefig("hist_" + name)

在大多數情況下,當我們創建直方圖時,我們通過將每個強度值的像素數除以歸一化因子(即圖像寬度和圖像高度的乘積)來對直方圖進行歸一化。為了便于使用,如果generate_histogram函數的輸入圖像是彩色圖像,我們首先將其轉換為灰度圖像(請參見第6行)。

03. 如何均衡圖像直方圖?

直方圖均衡化通常用于增強圖像的對比度。因此,該技術不能保證始終提高圖像質量。計算CDF(累積分布函數)是均衡圖像直方圖的常用方法。在圖2中,我們計算了在圖1中創建的樣本圖像的CDF。此外,在圖3中,我們顯示了先前樣本的均衡直方圖。

圖2:計算CDF。

圖3:均方圖。

為了計算python中的均衡直方圖,我們創建了以下代碼:

def equalize_histogram(img, histo, L):
  eq_histo = np.zeros_like(histo)
  en_img = np.zeros_like(img)
  for i in range(len(histo)):
    eq_histo[i] = int((L - 1) * np.sum(histo[0:i]))
  print_histogram(eq_histo, name="eq_"+str(index), title="Equalized Histogram")
  '''enhance image as well:'''
  for x_pixel in range(img.shape[0]):
    for y_pixel in range(img.shape[1]):
      pixel_val = int(img[x_pixel, y_pixel])
      en_img[x_pixel, y_pixel] = eq_histo[pixel_val]
  '''creating new histogram'''
  hist_img, _ = generate_histogram(en_img, print=False, index=index)
  print_img(img=en_img, histo_new=hist_img, histo_old=histo, index=str(index), L=L)
  return eq_histo

這是我們拍攝的3張不同圖片,并用作示例。如圖4所示,對于第一個圖像,直方圖顯示低強度像素的數量多于明亮像素。對于第二張圖像,情況完全相反,其中較亮像素的密度遠大于較暗像素的密度。第三張圖片似乎具有半正態直方圖。

圖4:三種不同類型的圖像及其直方圖和均等的直方圖。

使用均衡直方圖增強圖像

如前所述,我們可以使用圖像的均衡直方圖修改圖像的對比度。如代碼2第12行所示,對于輸入圖像中的每個像素,我們可以使用其均等值。結果可能比原始圖像更好,但不能保證。在圖5中,我們描述了3張圖像的修改版本。如圖所示,使用其均等的直方圖修改圖像會產生對比度更高的圖像。此功能在許多計算機視覺任務中很有用。

圖5:使用均衡直方圖的對比度修改。最左列是原始圖像。中間一欄是對比度修改的結果。

最右邊的列是修改后的圖像的直方圖。

04. 什么是直方圖匹配?

假設我們有兩個圖像,每個圖像都有其特定的直方圖。因此,我們想在進一步解決此問題之前,是否可以根據另一幅圖像的對比度來修改一幅圖像?答案是肯定的。實際上,這就是直方圖匹配的定義。換句話說,給定圖像A和B,可以根據B修改A的對比度。

當我們要統一一組圖像的對比度時,直方圖匹配非常有用。實際上,直方圖均衡也可以視為直方圖匹配,因為我們將輸入圖像的直方圖修改為與正態分布相似。

為了匹配圖像A和B的直方圖,我們需要首先均衡兩個圖像的直方圖。然后,我們需要使用均衡后的直方圖將A的每個像素映射到B。然后,我們基于B修改A的每個像素。

讓我們使用圖6中的以下示例來闡明以上段落。

圖6:直方圖匹配

在圖6中,我們將圖像A作為輸入圖像,將圖像B作為目標圖像。我們要基于B的分布來修改A的直方圖。第一步,我們計算A和B的直方圖和均等直方圖。然后,我們需要根據該值映射A的每個像素它的均衡直方圖求B的值。因此,例如,對于A中強度級別為0的像素,A均衡直方圖的對應值為4。現在,我們看一下B均衡直方圖并找到強度值對應于4,即0。因此我們將0強度從A映射到0 從B開始。對于A的所有強度值,我們繼續進行。如果從A到B的均衡直方圖中沒有映射,我們只需要選擇最接近的值即可。

def find_value_target(val, target_arr):
  key = np.where(target_arr == val)[0]
 
 
  if len(key) == 0:
    key = find_value_target(val+1, target_arr)
    if len(key) == 0:
      key = find_value_target(val-1, target_arr)
  vvv = key[0]
  return vvv
 
 
 
 
def match_histogram(inp_img, hist_input, e_hist_input, e_hist_target, _print=True):
  '''map from e_inp_hist to 'target_hist '''
  en_img = np.zeros_like(inp_img)
  tran_hist = np.zeros_like(e_hist_input)
  for i in range(len(e_hist_input)):
    tran_hist[i] = find_value_target(val=e_hist_input[i], target_arr=e_hist_target)
  print_histogram(tran_hist, name="trans_hist_", title="Transferred Histogram")
  '''enhance image as well:'''
  for x_pixel in range(inp_img.shape[0]):
    for y_pixel in range(inp_img.shape[1]):
      pixel_val = int(inp_img[x_pixel, y_pixel])
      en_img[x_pixel, y_pixel] = tran_hist[pixel_val]
  '''creating new histogram'''
  hist_img, _ = generate_histogram(en_img, print=False, index=3)
  print_img(img=en_img, histo_new=hist_img, histo_old=hist_input, index=str(3), L=L)

圖7:直方圖匹配示例。我們修改了左圖像的直方圖以匹配中心圖像的直方圖。

圖7示出了直方圖匹配的示例。如大家所見,盡管最左邊的圖像是明亮的圖像,但就對比度級別而言,可以將中心圖像視為更好的圖像。因此,我們決定使用中心圖像的收縮來修改最左邊的圖像。結果,即最右邊的圖像已得到改善。

代碼鏈接:https://github.com/aliprf/CV-HistogramMatching

總結

到此這篇關于基于OpenCV的直方圖匹配的實現方法的文章就介紹到這了,更多相關OpenCV直方圖匹配內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Opencv實現二維直方圖的計算及繪制
  • OpenCV-Python直方圖均衡化實現圖像去霧
  • python 對一幅灰度圖像進行直方圖均衡化
  • OpenCV利用python來實現圖像的直方圖均衡化
  • 詳解用Python為直方圖繪制擬合曲線的兩種方法
  • opencv python統計及繪制直方圖的方法
  • OpenCV半小時掌握基本操作之直方圖

標簽:股票 日照 隨州 錦州 西安 天水 安慶 白城

巨人網絡通訊聲明:本文標題《基于OpenCV的直方圖匹配的實現方法》,本文關鍵詞  基于,OpenCV,的,直方圖,匹配,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《基于OpenCV的直方圖匹配的實現方法》相關的同類信息!
  • 本頁收集關于基于OpenCV的直方圖匹配的實現方法的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    成人性色生活片| 亚洲欧洲精品一区二区三区 | 国产精品天美传媒| 国产精品99久久久久久似苏梦涵| 精品国产伦一区二区三区免费| 乱中年女人伦av一区二区| 久久久精品天堂| 国产69精品久久99不卡| 亚洲啪啪综合av一区二区三区| 在线看国产日韩| 秋霞成人午夜伦在线观看| 久久久综合九色合综国产精品| jizzjizzjizz欧美| 亚洲一区二区五区| 91精品中文字幕一区二区三区| 久久精品国产在热久久| 国产精品国产三级国产aⅴ入口| 91在线精品一区二区| 日精品一区二区三区| 国产欧美一区二区精品忘忧草| 99亚偷拍自图区亚洲| 日韩福利电影在线观看| 国产日韩精品一区| 欧美性一区二区| 久久99久久99小草精品免视看| 国产精品久久久久一区二区三区 | 亚洲福利一区二区| 精品国产乱子伦一区| 99国产一区二区三精品乱码| 日韩国产一区二| 国产精品高潮久久久久无| 欧美日韩精品一区二区三区蜜桃| 国产一区二区三区久久久| 又紧又大又爽精品一区二区| 丝袜美腿亚洲一区二区图片| 欧美日韩精品欧美日韩精品一综合| 免费在线成人网| 欧美一区二区三区免费在线看| 精品一区二区三区免费| 精品国产凹凸成av人导航| 亚洲一级二级三级| 精品国产91亚洲一区二区三区婷婷| a在线欧美一区| 日韩电影在线一区| 自拍偷拍亚洲综合| 久久精品欧美日韩精品| 欧美电影一区二区| 99视频精品全部免费在线| 久久精品国产免费| 亚洲成av人综合在线观看| 国产精品免费观看视频| 久久人人爽人人爽| 欧美色欧美亚洲另类二区| 北条麻妃国产九九精品视频| 九九热在线视频观看这里只有精品| 一区二区三区精品视频在线| 久久精品欧美一区二区三区不卡 | 欧美一区中文字幕| 91精品91久久久中77777| 国产精品一区二区在线观看不卡 | 亚洲大片在线观看| 亚洲免费在线电影| 国产精品久久久久久久久久久免费看 | 欧美天天综合网| 99在线精品免费| av在线不卡电影| 懂色av一区二区三区免费看| 国产美女娇喘av呻吟久久| 美腿丝袜一区二区三区| 日本女优在线视频一区二区| 天天操天天综合网| 视频在线在亚洲| 丝袜美腿亚洲一区| 日韩电影一区二区三区四区| 午夜精品福利一区二区蜜股av| 亚洲制服丝袜av| 亚欧色一区w666天堂| 亚洲成人免费看| 图片区小说区国产精品视频| 五月天网站亚洲| 性久久久久久久久久久久| 亚洲高清在线精品| 午夜电影久久久| 美女尤物国产一区| 久99久精品视频免费观看| 国产又粗又猛又爽又黄91精品| 国产一区二区三区免费在线观看| 国产成人av一区二区三区在线| 99久久精品免费看国产| 91日韩一区二区三区| 欧美午夜一区二区三区| 7777精品伊人久久久大香线蕉经典版下载 | 日韩精品中文字幕一区二区三区 | 久久99精品国产麻豆婷婷| 韩国精品主播一区二区在线观看 | 91在线porny国产在线看| 91亚洲精品乱码久久久久久蜜桃 | 久久99国内精品| 国产一区二区精品在线观看| 国产aⅴ综合色| 色综合久久天天综合网| 欧美日本免费一区二区三区| 精品嫩草影院久久| 欧美高清在线精品一区| 亚洲黄色免费网站| 蜜臀久久久久久久| 成人午夜视频网站| 欧美日韩视频不卡| 久久久久9999亚洲精品| 亚洲在线视频网站| 国产一区二区视频在线| 色噜噜夜夜夜综合网| 日韩三级中文字幕| 欧美高清在线精品一区| 欧美日韩午夜在线视频| 99国产精品国产精品久久| 欧美视频你懂的| 久久久国际精品| 亚洲a一区二区| 国产91精品一区二区麻豆网站| 欧美在线你懂得| 久久精品欧美一区二区三区麻豆| 亚洲午夜久久久| 高清不卡在线观看av| 欧美色图天堂网| 国产欧美精品一区二区三区四区| 亚洲综合自拍偷拍| 国产精品 欧美精品| 欧美熟乱第一页| 国产精品少妇自拍| 日韩电影在线免费| 欧洲一区在线观看| 中文字幕乱码久久午夜不卡 | 大尺度一区二区| 欧美日韩国产小视频| 国产精品你懂的在线| 麻豆精品国产传媒mv男同| 欧美最猛黑人xxxxx猛交| 欧美激情综合五月色丁香小说| 日韩经典一区二区| 欧美揉bbbbb揉bbbbb| 自拍偷在线精品自拍偷无码专区| 国产一区二区三区在线观看免费| 欧美精品vⅰdeose4hd| ...xxx性欧美| 成人小视频免费观看| 久久九九全国免费| 麻豆成人91精品二区三区| 欧美在线免费视屏| 亚洲六月丁香色婷婷综合久久| 国产成人在线影院| 久久久综合精品| 精久久久久久久久久久| 日韩欧美中文一区| 日韩高清国产一区在线| 4438成人网| 偷拍与自拍一区| 欧美剧情片在线观看| 亚洲狠狠爱一区二区三区| 色天使久久综合网天天| 国产精品国产成人国产三级| 国产.欧美.日韩| 中文字幕成人在线观看| 成人av小说网| 国产精品嫩草影院av蜜臀| 成人一区二区三区| 国产精品入口麻豆原神| 成人国产亚洲欧美成人综合网| 最新久久zyz资源站| 国产蜜臀97一区二区三区| 欧美另类高清zo欧美| av一区二区三区四区| 国产91在线|亚洲| 久久成人免费日本黄色| 亚洲午夜精品17c| 久久久亚洲精品石原莉奈| 5566中文字幕一区二区电影| 色婷婷综合五月| 色播五月激情综合网| 成人av资源下载| 欧洲精品一区二区| 欧美一区二区三区免费大片 | 伊人婷婷欧美激情| 亚洲国产成人一区二区三区| 欧美疯狂性受xxxxx喷水图片| 欧美三级中文字幕在线观看| 91精品免费观看| 久久久九九九九| 亚洲日本一区二区| 日韩高清不卡一区二区| 91亚洲精品一区二区乱码| 欧美一区二区三区婷婷月色| 在线91免费看| 欧美探花视频资源| 国产欧美在线观看一区| 制服丝袜av成人在线看| 欧美一区二区三区四区五区| 蜜臀av一区二区三区| 欧美激情一区三区| 欧美日韩午夜在线视频|