MATLAB图像处理_同态滤波

同态滤波:

利用广义叠加原理对同态系统进行滤波。

同态滤波是把频率过滤和灰度变换结合起来的一种图像处理方法,它依靠图像的照度/ 反射率模型作为频域处理的基础,利用压缩亮度范围和增强对比度来改善图像的质量。使用这种方法可以使图像处理符合人眼对于亮度响应的非线性特性,避免了直接对图像进行傅立叶变换处理的失真。

同态滤波的基本原理是:将像元灰度值看作是照度和反射率两个组份的产物。由于照度相对变化很小,可以看作是图像的低频成份,而反射率则是高频成份。通过分别处理照度和反射率对像元灰度值的影响,达到揭示阴影区细节特征的目的。

同态滤波处理的基本流程如下:

S(x,y)---->Log---->DFT---->频域滤波---->IDFT---->Exp---->T(x,y)

其中S(x,y)表示原始图像;T(x,y)表示处理后的图像;Log 代表对数运算;DFT 代表傅立叶变换(实际操作中运用快速傅立叶变换FFT);IDFT 代表傅立叶逆变换(实际操作中运用快速傅立叶逆变换IFFT);Exp 代表指数运算。

实现代码:

function I3 = test_tontai(I)

I=double(rgb2gray(I));
[M,N]=size(I);
rL=0.5;
rH=4.7;%可根据需要效果调整参数
c=2;
d0=10;
I1=log(I+1);%取对数
FI=fft2(I1);%傅里叶变换
n1=floor(M/2);
n2=floor(N/2);
for i=1:M
    for j=1:N
        D(i,j)=((i-n1).^2+(j-n2).^2);
        H(i,j)=(rH-rL).*(exp(c*(-D(i,j)./(d0^2))))+rL;%高斯同态滤波
    end
end
I2=ifft2(H.*FI);%傅里叶逆变换
I3=real(exp(I2));
subplot(122),imshow(I3,[]);title('同态滤波增强后');

实验发现,同态滤波有类似于高动态范围压缩的效果,比如可以把图像暗的部分提亮。

下图为原始图像,属于低曝光的一幅图像:

同态滤波后:

时间: 2024-10-01 05:16:15

MATLAB图像处理_同态滤波的相关文章

MATLAB图像处理_去雾算法

使用MATLAB进行图像的去雾操作,网上一搜,这方面的东西很多,貌似已然成为研究的一个方向,大牛辈出! 这里仅仅给出一个代码,能实现图像的去雾操作,详细的看后边有没有时间,想自己研究研究. function darktest(filename) %暗影去雾算法 %filename------文件名或文件绝对路径 %用法:darktest('7.png') close all clc w0=0.65; %0.65 乘积因子用来保留一些雾,1时完全去雾 t0=0.1; I=imread(filena

MATLAB图像处理_直接操作像素点进行颜色变换

需求 直接操作RGB图像的像素点,进行颜色的相关操作. 掌握这个,必须对MATLAB中矩阵的操作有所熟悉,特别是整行.整列的操作. 如: J = [1 2 3; 4 5 6; 7 8 9]; --这里定义了一个三行三列的矩阵. J[:, 1] = 0; --直接操作了J矩阵中每一行的第1列 此时J = [0 2 3; 0 5 6; 0 8 9] 其他如行操作用法类似,不再赘述. 下面我们对一副图像进行直接操作,把其中的红色部分改为蓝色. 代码如下: % BY SCOTT % red2blue %

MATLAB图像处理_感悟和总结

两个星期的图像处理研究学习差不多告一段落: 真的应了一句话,只有你接触某个领域,才真正可以体会到某个领域的魅力所在: 到目前为止,学习的一些图像处理知识,都是最基础的,其实和机器学习.计算机视觉.人工智能等方面比起来,只是小菜一碟:感觉图像处理方面的知识博大精深,确实如此,这是一项研究生花两年的时间都不一定能掌握好的东西.只能说和嵌入式方向一样,都是水比较深.搞过这个之后,才深知自己的数学知识没学到位,后悔大学数学没有好好学,现在又有重新学数学的念头了,甚至有考个研究生的冲动了... 是不是很蛋

MATLAB图像处理_图像的白平衡算法(灰色世界法)

白平衡,即所谓的白色的平衡. 白平衡的算法有很多,这里记录的是最简单实用的白平衡算法,即灰色世界法! 灰度世界算法(Gray World)是以灰度世界假设为基础的,该假设认为对于一幅有着大量色彩变化的图像, R. G. B 三个分量的平均值趋于同一个灰度K. 下面是具体的算法代码: RGB=imread('test.jpg'); R = RGB(:,:,1); G = RGB(:,:,2); B = RGB(:,:,3); Rx4 = RGB(:,:,1)*4; Gx4 = RGB(:,:,2)

MATLAB图像处理_统计最大/最小/平均灰度

需求: 求图像的最大灰度.最小灰度.以及平均灰度. 代码如下: % BY SCOTT % Count max gray and min gray clear all; clc; rgb = imread('test.jpg'); gray = rgb2gray(rgb); [m,n] = size(gray); max = 0; min = 255; sum = 0; avg = 0; for i=1:1:m for j=1:1:n if (gray(i,j) > max) max = gray

Atitit MATLAB 图像处理 经典书籍attilax总结

1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读] - 当当图书.html1 1.3. 数字图像处理(MATLAB版)(第二版)(本科教学版)2 1.1. MATLAB数字图像处理 第1章 图像处理与MATLAB2007a简介 第2章 图像的编码和解码 第3章 图像复原 第4章 图像处理的相关操作 第5章 图像频域变换 第6章 图像处理中的代数运算及几何变换 第7章 图像增强 第8章 图像分割与边缘检测 第9章 小波分析

学习笔记(2)---Matlab 图像处理相关函数命令大全

Matlab 图像处理相关函数命令大全 一.通用函数: colorbar  显示彩色条 语法:colorbar \ colorbar('vert') \ colorbar('horiz') \ colorbar(h) \ h=colorbar(...) \ colorbar(...,'peer',axes_handle) getimage 从坐标轴取得图像数据 语法:A=getimage(h) \ [x,y,A]=getimage(h) \ [...,A,flag]=getimage(h) \

Matlab图像处理系列1———线性变换和直方图均衡

注:本系列来自于图像处理课程实验,用Matlab实现最基本的图像处理算法 图像点处理是图像处理系列的基础,主要用于让我们熟悉Matlab图像处理的编程环境.灰度线性变换和灰度拉伸是对像素灰度值的变换操作,直方图是对像素灰度值的统计,直方图均衡是对灰度值分布的变换. 1.灰度线性变换 (1)线性变换函数 原图向灰度值为g,通过线性函数f(x)=kx+b转换为f(g)得到灰度的线性变换. (2)代码实现 Matlab中支持矩阵作为函数参数传入,定义一个线性转换函数,利用Matlab矩阵操作,用一行代

用C#调用Matlab图像处理自制QQ游戏2D桌球瞄准器

平时不怎么玩游戏,有时消遣就玩玩QQ里的2D桌球,但是玩的次数少,不能像骨灰级玩家一样百发百中,肿么办呢?于是某天突发奇想,决定自己也来做个“外挂”.说是外挂,其实只是一个瞄准器,毕竟外挂是修改别人的软件,有点违法的意思,况且自己还没有能力去那么做,所以自己还是弄个瞄准器,做做弊,过下小瘾,同时也提高一下自己的编程能力. 起初(也就是半年前),自己尝试做一个瞄准器的初始版本,用C#做,想法很简单: Step1.把鼠标移到洞口,获取鼠标位置: Step2.将鼠标放到要击打的球的圆心上,获取鼠标当前