当前位置: 首页 > news >正文

提供邯郸网站建设网络营销与直播电商怎么样

提供邯郸网站建设,网络营销与直播电商怎么样,重庆做网站怎么做呀,安徽seo顾问服务概念 直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法,通过拉伸像素强度分布范围来增强图像对比度。 原理 均衡化指的是把一个分布 (给定的直方图) 映射 到另一个分布 (一个更宽更统一的强度值分布),从而令强度值分布会在整个范围内…

概念

直方图均衡化是图像处理领域中利用图像直方图对对比度进行调整的方法,通过拉伸像素强度分布范围来增强图像对比度。

原理

  • 均衡化指的是把一个分布 (给定的直方图) 映射 到另一个分布 (一个更宽更统一的强度值分布),从而令强度值分布会在整个范围内展开。

  • 要想实现均衡化的效果,映射函数应该是一个 累积分布函数 ( cumulative distribution function, cdf ) 。对于直方图 H ( i ) H(i) H(i),它的累积分布函数 H ′ ( i ) H^{'}(i) H(i)

    H ′ ( i ) = ∑ j = 0 i H ( j ) H^{'}(i) = \sum_{j=0}^i H(j) H(i)=j=0iH(j)

    要使用其作为映射函数,我们必须对最大值为255 (或者用图像的最大强度值) 的累积分布 H ′ ( i ) H^{'}(i) H(i) 进行归一化。

  • 最后,我们使用一个简单的映射过程来获得均衡化后像素的强度值,假设原图为 I ( x , y ) I(x,y) I(x,y),均衡化后像素强度值 I ′ ( x , y ) I^{'}(x,y) I(x,y)

    I ′ ( x , y ) = H ′ ( I ( x , y ) ) I^{'}(x,y) = H^{'}(I(x,y)) I(x,y)=H(I(x,y))

代码实现

以 OpenCV 为例,其直方图均衡化函数为 equalizeHist(),代码实现如下:

/** @brief Equalizes the histogram of a grayscale image.The function equalizes the histogram of the input image using the following algorithm:- Calculate the histogram \f$H\f$ for src .
- Normalize the histogram so that the sum of histogram bins is 255.
- Compute the integral of the histogram:
\f[H'_i =  \sum _{0  \le j < i} H(j)\f]
- Transform the image using \f$H'\f$ as a look-up table: \f$\texttt{dst}(x,y) = H'(\texttt{src}(x,y))\f$The algorithm normalizes the brightness and increases the contrast of the image.@param src Source 8-bit single channel image.
@param dst Destination image of the same size and type as src .*/
CV_EXPORTS_W void equalizeHist( InputArray src, OutputArray dst );void cv::equalizeHist( InputArray _src, OutputArray _dst )
{CV_INSTRUMENT_REGION();CV_Assert( _src.type() == CV_8UC1 );if (_src.empty())return;CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat(),ocl_equalizeHist(_src, _dst))Mat src = _src.getMat();_dst.create( src.size(), src.type() );Mat dst = _dst.getMat();CV_OVX_RUN(!ovx::skipSmallImages<VX_KERNEL_EQUALIZE_HISTOGRAM>(src.cols, src.rows),openvx_equalize_hist(src, dst))CALL_HAL(equalizeHist, cv_hal_equalize_hist, src.data, src.step, dst.data, dst.step, src.cols, src.rows);Mutex histogramLockInstance;const int hist_sz = EqualizeHistCalcHist_Invoker::HIST_SZ;int hist[hist_sz] = {0,};int lut[hist_sz];EqualizeHistCalcHist_Invoker calcBody(src, hist, &histogramLockInstance);EqualizeHistLut_Invoker      lutBody(src, dst, lut);cv::Range heightRange(0, src.rows);if(EqualizeHistCalcHist_Invoker::isWorthParallel(src))parallel_for_(heightRange, calcBody);elsecalcBody(heightRange);int i = 0;while (!hist[i]) ++i;int total = (int)src.total();if (hist[i] == total){dst.setTo(i);return;}float scale = (hist_sz - 1.f)/(total - hist[i]);int sum = 0;for (lut[i++] = 0; i < hist_sz; ++i){sum += hist[i];lut[i] = saturate_cast<uchar>(sum * scale);}if(EqualizeHistLut_Invoker::isWorthParallel(src))parallel_for_(heightRange, lutBody);elselutBody(heightRange);
}

应用举例

C++ 代码如下:

#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"
#include <iostream>using namespace cv;
using std::cout;
using std::endl;int main(int argc, char** argv)
{CommandLineParser parser(argc, argv, "{@input | wukong.png | input image}");Mat src = imread(samples::findFile(parser.get<String>("@input")), IMREAD_COLOR);if (src.empty()){cout << "Could not open or find the image!\n" << endl;cout << "Usage: " << argv[0] << " <Input image>" << endl;return EXIT_FAILURE;}// 转换为灰度图像cvtColor(src, src, COLOR_BGR2GRAY);Mat dst;// 直方图均衡化equalizeHist(src, dst);imshow("Source image", src);imshow("Equalized Image", dst);waitKey();return EXIT_SUCCESS;}

Python 代码如下:

import cv2
import matplotlib.pyplot as plt# 读取图像
img = cv2.imread('../data/wukong.png', cv2.IMREAD_COLOR)
# 转换为灰度图
src = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 直方图均衡化
dst = cv2.equalizeHist(src)
# 显示原图和均衡化后的图
fig, axes = plt.subplots(2, 2, figsize=(18, 9))
axes[0, 0].imshow(src, cmap='gray')
axes[1, 0].imshow(dst, cmap='gray')
axes[0, 1].hist(src.ravel(), 256, [0, 256], color='#fc8403')
axes[1, 1].hist(dst.ravel(), 256, [0, 256], color='#fc8403')
# 显示直方图网格
axes[0, 1].grid(axis='y', linestyle='-.', alpha=0.5)
axes[1, 1].grid(axis='y', linestyle='-.', alpha=0.5)
# 设置标题
axes[0, 0].set_title('Original Image')
axes[1, 0].set_title('Equalized Image')
axes[0, 1].set_title('Histogram of Original Image')
axes[1, 1].set_title('Histogram of Equalized Image')
# 显示图表
plt.show()

直方图均衡化效果

http://www.wangmingla.cn/news/66007.html

相关文章:

  • 商业网线多少钱一年关键词seo服务
  • 深圳网站建设公司排行榜互联网的推广
  • 怎样制作微信小程序汨罗网站seo
  • 网站建设与维护就业怎么样游戏搜索风云榜
  • 公司网站兰州建设需要多少钱长尾词seo排名优化
  • wordpress 下一篇插件seo搜索引擎优化期末及答案
  • 进服务器编辑网站怎么做教程seo推广排名网站
  • wordpress改网站地址关键词seo
  • 保亭整站优化seo软件服务
  • 网站建设平台官网河间米各庄广告主资源哪里找
  • 郑州做网站哪家好熊掌号培训班管理系统 免费
  • 佛山网站制作建设百度竞价排名是哪种方式
  • cms 做网站市场推广seo职位描述
  • 如何做网站的实时画面口碑营销名词解释
  • 个人网站备案要求推广赚佣金项目
  • 苏州知名高端网站建设网络公司不受国内限制的搜索引擎
  • 做瞹网站sem推广托管公司
  • 如何自建网站腾讯企业邮箱登录入口
  • 广东如何进行网站制作排名郑州百度公司地址
  • 做微网站的第三方登录沈阳seo网站关键词优化
  • 装修网站横幅怎么做百度指数是免费的吗
  • 静安区建设工程招标投标管理部门网站谷歌seo是什么职业
  • 政府网站做减法公务员考题第一营销网
  • 程序员如何自学长沙网站seo外包
  • 以公司做网站福清网络营销
  • 学做的网站基础蛋糕百度竞价排名服务
  • 专做蓝领的网站百度搜索风云排行榜
  • wordpress登录后页面百度问答优化
  • 电商网站建设的步骤线上宣传渠道和宣传方式
  • 万网账号跟网站有关系吗株洲疫情最新情况