第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波10 - 直方图处理 - 局部直方图处理

这里写目录标题

      • 局部直方图处理

局部直方图处理

因为像素是由基于整个图像的灰度的变换函数修改的。这种全局性方法适合于整体增强,但当目的是增强图像中几个小区域的细节时,通常就会失败。这是因为在这些小区域中,像素的数量对计算全局变换的影响可以忽略。解决方法是设计基于像素邻域的灰度分布的变换函数。

# opencv实现的局部直方图处理
img_ori = cv2.imread('DIP_Figures/DIP3E_Original_Images_CH03/Fig0326(a)(embedded_square_noisy_512).tif', 0)
img_transform, _= my_calhist(img_ori)
# img_transform = cv2.equalizeHist(img_ori)plt.figure(figsize=(15, 6))
plt.subplot(1, 3, 1), plt.imshow(img_ori, cmap='gray', vmin=0, vmax=255), plt.title('Original')
plt.subplot(1, 3, 2), plt.imshow(img_transform, cmap='gray', vmin=0, vmax=255), plt.title(f'Global Equalize Hist')clahe = cv2.createCLAHE(clipLimit=255, tileGridSize=(3, 3))
img_transform = clahe.apply(img_ori)plt.subplot(1, 3, 3), plt.imshow(img_transform, cmap='gray', vmin=0, vmax=255), plt.title(f'Local Equalize Hist')
plt.tight_layout()
plt.show()

在这里插入图片描述

def my_calhist_local(img):"""histogram equalizationparam: input img: uint8[0, 255] grayscale imagereturn uint8[0, 255] grayscale image after histogram equalization"""
#     hist, bins = my_hist(img, bins=256, normalized=True)  #局部直方图的时候这个比较慢,改为了下面的Numpy,效果快好多hist, bins = np.histogram(img, bins=256, range=[0, 256], density=True)#--------------------------------Numpy-------------------hist_cumsum = np.round(np.cumsum(hist) * 255).astype(int)img_dst = hist_cumsum[img]return img_dstdef local_calhist(img_ori, grid_size=(3, 3)):"""Local histogram equalizationparam: input img_ori: input uint8[0, 255] grayscale imageparam: input grid_size: grid size of the local hist, size need to be uneven number like 1, 3, 5return local histogram equalization of image uint8[0, 255]"""height, width = img_ori.shapeimg_dst = img_ori.copy()m = grid_size[0]n = grid_size[1]padding_h = int((m - 1) / 2)padding_w = int((n - 1) / 2)img_pad = np.pad(img_ori.copy(), (padding_h, padding_w), mode='constant', constant_values=0)for h in range(padding_h, height + padding_h):for w in range(padding_w, width + padding_w):temp = my_calhist_local(img_pad[h-padding_h:h+padding_h+1, w-padding_w:w+padding_w+1])img_dst[h:h+1, w:w+1] = temp[padding_h, padding_w]return img_dst
# Numpy实现的局部直方图处理,效果比opencv好
img_ori = cv2.imread('DIP_Figures/DIP3E_Original_Images_CH03/Fig0326(a)(embedded_square_noisy_512).tif', 0)# global histogram equalization
img_global = my_calhist_local(img_ori)# local histogram equalization
img_local = local_calhist(img_ori, grid_size=(3, 3))plt.figure(figsize=(15, 6))
plt.subplot(1, 3, 1), plt.imshow(img_ori, cmap='gray', vmin=0, vmax=255), plt.title('Original')
plt.subplot(1, 3, 2), plt.imshow(img_global, cmap='gray', vmin=0, vmax=255), plt.title(f'Global Equalize Hist')
plt.subplot(1, 3, 3), plt.imshow(img_local, cmap='gray', vmin=0, vmax=255), plt.title(f'Local Equalize Hist')
plt.tight_layout()
plt.show()

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/260798.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CodeForces369C On Changing Tree

昨天的CF自己太挫了。一上来看到A题,就有思路,然后马上敲,但是苦于自己很久没有敲计数的题了,许多函数都稍微回忆了一阵子。A题的主要做法就是将每个数质因数分解,统计每个质因子的个数,对于每个质因子pi的…

ES6之const命令

一直以来以ecma为核心的js始终没有常量的概念,es6则弥补了这一个缺陷; const foofoo;foobar;//TypeError: Assignment to constant variable.上例声明了一个基本类型的常量,如过试图修改初始值则会报错;如果是引用类型的值同样适用…

C++和Rust_后端程序员一定要看的语言大比拼:Java vs. Go vs. Rust

这是Java,Go和Rust之间的比较。这不是基准测试,更多是对可执行文件大小、内存使用率、CPU使用率、运行时要求等的比较,当然还有一个小的基准测试,可以看到每秒处理的请求数量,我将尝试对这些数字进行有意义的解读。为了…

Hdu 2015 偶数求和

题目链接&#xff1a;http://acm.hdu.edu.cn/showproblem.php?pid2040。水题。CODE&#xff1a;1 #include <stdio.h>2 #include <stdlib.h>3 #include <string.h>4 #include <math.h>5 using namespace std;6 7 const int maxn 102;8 9 int save[ma…

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波11 - 直方图处理 - 使用直方图统计量增强图像

使用直方图统计量增强图像 全局均值和方差 μn∑i0L−1(ri−m)np(ri)(3.24)\mu_{n} \sum_{i0}^{L-1} (r_{i} - m)^{n} p(r_{i}) \tag{3.24}μn​i0∑L−1​(ri​−m)np(ri​)(3.24) m∑i0L−1rip(ri)(3.25)m \sum_{i0}^{L-1} r_{i} p(r_{i}) \tag{3.25}mi0∑L−1​ri​p(ri​…

数据结构 --- 堆

to be continued转载于:https://www.cnblogs.com/zhongzhiqiang/p/5808564.html

HDU - 1723 - Distribute Message

先上题目&#xff1a; Distribute Message Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1186 Accepted Submission(s): 547 Problem DescriptionThe contest’s message distribution is a big thing in pre…

nodejs 图片处理模块 rotate_学会Pillow再也不用PS啦——Python图像处理库Pillow入门!...

你在用什么软件进行图像处理呢&#xff1f;厌倦了鼠标和手指的拖拖点点&#xff0c;想不想用程序和代码进行图像的高效处理&#xff0c;Python作为简单高效又很强大的一门编程语言&#xff0c;对于图像的处理自然也是轻松拿下&#xff0c;听起来是不是很酷很极客&#xff0c;那…

创建一个追踪摄像机(2)

为了生成曲线&#xff0c;函数需要通过4个在沿着重量值在0和1之间的路径上连贯的位置。由于重量在这些2个值之间增加&#xff0c;曲线返回在更远的路径上的坐标。 当所提供的重量值为0&#xff0c;曲线将返回正确的坐标在第二个输入坐标。当所提供的重量值为1&#xff0c;曲线将…

Xcodebuild自动打包

#! /bin/bash #firtoken 29b441056e1e17c984cb32fadadsdddd shell_dirdirname $0 TARGET_NAME"SmartLock" DIR_PATH/Users/用户名/Desktop/SmartLock SIGN"iPhone Distribution:******" PROFILE"66d127d6-7963-4c20-ac8b-47e4f0fe8742" TEMP_DIR…

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波12 - 空间域滤波基础 - 卷积运算(numpy 实现的三种卷积运算)

这篇文章比较长&#xff0c;请耐心看空间域滤波基础线性滤波可分离滤波器核空间域滤波和频率域滤波的一些重要比较如何构建空间滤波器第一种卷积方法&#xff08;公式法&#xff09;第二种卷积的方法&#xff08;可分离核&#xff09;第三种方法&#xff08;img2col)这是分离核…

hdu_1861_游船出租_201402282130

游船出租 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 7238 Accepted Submission(s): 2411 Problem Description 现有公园游船租赁处请你编写一个租船管理系统。当游客租船时&#xff0c;管理员输入船号并按…

acer清理工具 clear下载_SolidWorks绿色版下载-SolidWorks完全清理工具v1.0免费版

SolidWorks完全清理工具(SWCleanUninstall)是一款绿色免费的SolidWorks完全卸载工具。很多SolidWorks安装不成功都是因为之前安装错误做成软件残留。这款工具可以完全清理很多SolidWorks留下的注册表垃圾。软件核心功能1、SWCleanUninstall可以直接删除电脑上的SolidWorks软件2…

ZOJ1221 Risk 图形的遍历

一开始做图形遍历的题都是用链表做的&#xff0c;这次用数组体会到了方便但就是有点浪费。 不过题目给的内存限制已经足够了。 View Code 1 #include<cstdio>2 #include<cstdlib>3 #include<cstring>4 #include<queue>5 #include<iostream>6 7 …

Android 从AndroidManifest获取meta-data

语法如下&#xff1a; <meta-data android:name"string"android:resource"resource specification"android:value"string" /><meta-data>标签可以作为子标签&#xff0c;可以被包含在<activity>、<application> 、<s…

trim()函数

参数string&#xff1a;string类型&#xff0c;指定要删除首部和尾部空格的字符串返回值String。 函数执行成功时返回删除了string字符串首部和尾部空格的字符串&#xff0c;发生错误时 返回空字符串&#xff08;""&#xff09;。 如果参数值为null时&#xff0c;会抛…

第3章 Python 数字图像处理(DIP) - 灰度变换与空间滤波13 - 平滑低通滤波器 -盒式滤波器核

这里写目录标题平滑&#xff08;低通&#xff09;空间滤波器盒式滤波器核平滑&#xff08;低通&#xff09;空间滤波器 平滑&#xff08;也称平均&#xff09;空间滤波器用于降低灰度的急剧过渡 在图像重取样之前平滑图像以减少混淆用于减少图像中无关细节平滑因灰度级数量不…

python中str用法_python数据类型之str用法

1、首字母大写 语法&#xff1a;S.capitalize() ->str title "today is a good day"title_catitle.capitalize() print(title_ca) 结果&#xff1a;today is a good day 2、大写转小写 1 语法&#xff1a;S.casefold() ->str2 3 title "TODAY is a GOOD …

WPF 窗体设置

WPF 当窗体最大化时控件位置的大小调整&#xff1a; View Code 1 <Window x:Class"WpfApplication1.MainWindow"2 xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"3 xmlns:x"http://schemas.microsoft.com/wi…

Git实践

Git是什么自不必说。Git和gitlab安装和实践在后边的俩篇中会写。本篇仅重点写Git自动部署。Git同样有Hooks,可以用于各种需求。可以控制提交commit名称&#xff0c;可以控制代码规范&#xff0c;也当然包含以下要介绍的自动部署&#xff0c;也不仅包含这些。Git自动部署简单的思…