10、图像直方图处理与空间滤波技术详解

图像直方图处理与空间滤波技术详解

1. 直方图处理与函数绘图

在图像增强领域,直方图处理是一种重要的技术手段。通过直方图匹配,可以对图像的对比度进行有效调整。例如,使用 histeq 函数可以实现这一目的,其语法为 g = histeq(f, p) ,其中 f 是输入图像, p 是指定的直方图。

1.1 直方图匹配示例

假设我们有一张图像,经过直方图匹配处理后,其效果相较于普通的直方图均衡化有明显提升。从图 3.11 可以看出,指定的直方图与原始直方图相比变化相对较小,但却能显著改善图像的增强效果。图 3.11(b) 展示了直方图匹配后的结果,其直方图如图 3.11(c) 所示。该直方图的显著特征是其低端向灰度值较高的区域移动,更接近指定的形状,但向右的偏移程度不像图 3.10(d) 中那样极端,图 3.10(d) 对应的图 3.10(c) 图像增强效果较差。

1.2 自适应直方图均衡化函数 adapthisteq

adapthisteq 函数实现了所谓的对比度受限自适应直方图均衡化(CLARE)。与之前的方法不同,它不是对整个图像进行处理,而是将图像划分为多个小区域(称为瓷砖),对每个瓷砖分别进行直方图指定处理,然后使用双线性插值将相邻瓷砖合并,以消除人为产生的边界。该函数的语法为:

g = adapthisteq(f, param1, val1, param2, val2

相关推荐

图像直方图均衡化和空间滤波

HW2: 直方图和空间滤波HW2 直方图和空间滤波 1习题 1 直方图均衡化 15 分 2 空间滤波20 分 2编程题 1直方图均衡化35 分 2空间滤波30 分1习题1.1 直方图均衡化 (15 分) 假设你对一张图已经进行了一次直方图均衡化的操作。如果对这张图进行第二次直方图均衡化,得到的结果跟第一次均衡化的结果一样吗?请给予证明。 直方图均衡化处理是把原始图像的灰度直方图从比较集中的某个灰

t617的博客 2693

图像增强--9直方图调整和 10空间域滤波

图像增强是数字图像处理的最基本的方法之一,在数字图像处理中受到广泛重视,是具有重要实用价值的技术。图像增强的目的在于:(1)采用一系列技术改善图像的视觉效果,提高图像的清晰度。(2)将图像转换成一种更适合于人或机器进行解译和分析处理的形式。图像增强不是以图像保真度为原则,而是通过处理设法有选择地突出便于人或机器分析某些感兴趣的信息,抑制一些无用的信息,以提高图像的使用价值,即图像增强处理只是增强了

技术提高效率 7025

数字图像处理 第三章——灰度变换与空间滤波

对于某些应用,采用均匀直方图的基本增强并不是最好的方法,有时希望处理后的图像具有规定的直方图形状可能更有用,这种用于产生处理后由特殊直方图的方法称为直方图匹配。统计排序滤波器是一种非线性空间滤波器,这种滤波器的响应以滤波器包围的图像区域中所包含的像素的排序(排队)为基础,然后使用统计排序结果决定的值代替中心像素的值。分别是输入图像和锐化后的图像,如果使用具有负的中心系数的拉普拉斯滤波器,则常数c=-1,如果使用具有正的中心系数的滤波器,则常数c=1。锐化处理的主要目的是突出灰度的过度部分。

adchloe的博客 1643

【数字图像处理1】直方图均衡化、平滑滤波器、锐化滤波器

一、前言 10.10数字图像处理作业,对一张图像进行以下操作: 1、 直方图均衡化 2、 用平滑滤波器(均值滤波和中值滤波)过滤图像 3、 用锐化滤波器(梯度算子和拉普拉斯算子)过滤图像 本次作业主要使用Python + OpenCV来实现。 二、 如何安装OpenCV 使用Python自带的pip工具进行下载,一般下载的Python都会绑定pip工具,用来自动拓展Python插件包。  win+R打开程序之后输入cmd  在控制台输入【pip install opencv-python】即可自动安装

火火的博客 5598

《数字图像处理》第三章-灰度变换与空间滤波 笔记

参考文章: 直方图规定化(直方图匹配) 数字图像处理:直方图均衡化 数字图像处理之直方图均衡化 图像处理基本算法-卷积和相关 数字图像处理第三版(冈萨雷斯)——第三章灰度变换与空间滤波(part1) 《数字图像处理 第三版》(冈萨雷斯)——第三章 灰度变换和空间滤波 数字图像处理第三版(冈萨雷斯)——第三章灰度变换与空间滤波(part2) 背景: 空间域指的是图像平面本身,是直接对图像中的像素进行处理;变换域(eg:频率域)中的图像处理,首先要将图像变换到变换域,在变换域中进行处理,然后再对结果进

肉丸不肉 4154

Python计算机视觉 图像处理基础:直方图、直方图均衡化、高斯滤波

文章目录一、灰度变换1.1 灰度图的定义1.2 彩色图像转灰度图像的方法1.3 采用convert()方法转换1.4 代码展示1.5 结果展示二、图像轮廓和直方图2.1 定义2.2 代码实现三、直方图均衡化3.1 定义3.2 代码展示 # 实验目的 完成Python计算机视觉 图像处理基础:直方图、直方图均衡化、高斯滤波的基础操作。 一、灰度变换 1.1 灰度图的定义 灰度图,Gray Scale Image 或是Grey Scale Image,又称灰阶图。把白色与黑色之间按对数关系分为若干等级,称..

whaha12的博客 6192

MATLAB图像处理实战:直方图均衡化与滤波技术

在深入探索MATLAB图像处理功能之前,有必要对MATLAB图像处理工具箱有一个概览。MATLAB图像处理工具箱提供了一系列预定义的函数,用于执行基本和高级图像处理操作。这些函数可用于各种图像处理任务,例如图像增强、分析、滤波、配准、变换、分割、区域生长、形态学处理、图像重建以及颜色空间转换等。在开发图像处理算法时,设计原则和目标是确保算法不仅能够达到预期的处理效果,而且在执行效率和资源消耗方面都是可接受的。以下是设计自定义图像处理算法时应该考虑的几个关键原则:准确性。

weixin_42513209的博客 1052

用limma包进行多组差异表达分析

写在前面:最近在使用limma包进行差异表达分析,参考了网上许多教程都觉得说的云里雾里,很不清楚。经过我自己一段时间非常痛苦的钻研,弄明白了,解决了我的实际需求。于是决定将我的分析经验写下来,分享给需要的人。 首先加载前期预处理好的表达矩阵。(我的原始表达矩阵文件已附在文后,大家有需要可以下载实践) setwd("E://Rworkplace") data<-read.table...

weixin_40640700的博客 4万+

告别手动打点!用Cesium为你的大疆无人机快速生成区域巡查航线(保姆级教程)

本文详细介绍了如何利用Cesium平台为大疆无人机快速生成区域巡查航线的保姆级教程。通过自动化航线规划,告别传统手动打点的繁琐操作,实现高效、无死角的区域覆盖。文章涵盖环境搭建、实战案例及高级优化技巧,特别适合无人机操作员和巡检工作者提升工作效率。

weixin_30399821的博客 521

Springboot信息泄露以及heapdump的利用

努力是为了不平庸~安全有些时候是枯燥的,这一次,让我们先人一步,趣学渗透!

LiBai'S BLOG 3万+

国产FPGA高云GW1NSR-4C,集成ARM Cortex-M3硬核

从板子整体角度来看,这是一款国产化程度很高的板子,从主控FPGA,到JTAG芯片,存储芯片、电源芯片等,都是使用的国产半导体公司的产品。板子整体尺寸也比较迷你,属于小而美类型的,可以认为是一款FPGA核心板,当然也预留了排针接口,给用户足够的扩展空间。对于想了解高云小蜜蜂SoC软硬件开发,以及对云源软件、MCU开发环境做个深度评测来说足够了。JTAG调试器固件可以增加虚拟串口功能,对于板子本来来说面积不会有改动,只需要添加两根信号线即可。

whik1194的博客 6404

Modbus协议学习第一篇之基础概念

因工作需要而接触Modbus,正在恶补知识,利用博客的方式来加深理解和记忆,同时希望同行大佬能一起交流。

hzf978742221的博客 882

PowerShell 升级到 v7 并设置为默认版本(详细操作指南)

本文详细介绍了如何将PowerShell升级到v7并设为默认版本。PowerShell 7基于.NET Core构建,具有跨平台支持、性能优化和新语法特性等优势。文章提供了多种安装方法(MSI安装包、包管理器)和设置默认版本的方案(修改PATH、创建符号链接、配置编辑器等),同时涵盖企业批量部署解决方案和常见问题处理。通过升级到PowerShell 7,用户可以获得更强大的命令行体验,适用于开发、运维和自动化场景。

huluang的专栏 4298

古月居ros2入门21讲里面7.节点:机器人的工作细胞,报错:QSocketNotifier: Can only be used with threads started...如何解决?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!

**My Coding Family** 1826

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: 3、Excel VBA 应用开发全攻略
下一篇: 25、离子通道:从微观到宏观的探索
python9snake
博客等级 码龄1天 0粉丝 1724原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值