13.1 非线性变化的图像增强和补偿——滤波器对图像作增强提高视觉质量(matlab程序)

news2024/9/21 4:36:49

1.简述

      

图像的线性变换和非线性变换,逐像素运算就是对图像的没一个像素点的亮度值,通过一定的函数关系,转换到新的亮度值。这个转换可以由函数表示:

s = f ( r ) s = f( r )s=f(r)

其中r为原来的像素值,s为新的像素值,通常采用的函数了单调函数进行变换。

线性变换:

s ( x , y ) = c + k r ( x , y ) s(x,y) =c+kr(x,y)
s(x,y)=c+kr(x,y)

其中c和k均为常数

非线性变换:

s = a + l n ( r + 1 ) b l n c s=a+\frac {ln(r+1)} {blnc}
s=a+ 
blnc
ln(r+1)

 

其中a,b,c为常数

Gamma变换:

s = c r γ s = cr^γ
s=cr 
γ
 

其中c为常数,通常取1,γ也为常数,r的范围为[0,255],通常会放缩到[0,1]

图为γ取不同值时的情况,例如,当原图像的像素值为0.2时,γ=1.5时,现图像的像素值小于0.2,γ=1时,现图像的像素值等于0.2.当γ=0.5时,现图像的像素值大于0.4.
 

2.代码


clear all;
%% 
C=double(imread('trees.tif'));       %读入图片
h=[1,1,1;1,1,1;1,1,1]./9;
B=C(:,:,1);
%B=imfilter(B,h,'replicate');
S=size(B);H=S(1,1);W=S(1,2);
t=0.75;%0.730174;
h0 = (8*t*t*t-6*t*t+3*t)/(1+2*t)*(1/32);
h1 = (-16*t*t*t+20*t*t-12*t+3)/(1+2*t)*(1/32);
h2 = (2*t-3)/(1+2*t)*(1/8.);
h3 = (16*t*t*t-20*t*t+28*t+5)/(1+2*t)*(1/32.);
h4 = (-8*t*t*t+6*t*t+5*t+20)/(1+2*t)*(1/16.);
hL=[h0,h1,h2,h3,h4,h3,h2,h1,h0];

g0=-t/16;
g1=(1-2*t)/16;
g2=(t+4)/16;
g3=(3+2*t)/8;
hH=[-g0,g1,-g2,g3,-g2,g1,-g0];
%%   对淹没在噪声中的SAR图像首先用Wiener滤波法自适应去噪
%Idenoise= medfilt2(B(:,:,1),[3 3]);%中值滤波
%Idenoise = wiener2(B(:,:,1),[5 5]);%自适应滤波
%Idenoise=double(Idenoise);
Idenoise=B;

%%   用多分辨分解法提取高频边缘BI

hL=[1/16,1/4,3/8,1/4,1/16];
for i=1:length(hL)
    for j=1:length(hL)
        hL2D(i,j)=hL(i)*hL(j);
    end
end
L0=imfilter(Idenoise,hL2D,'replicate');%低频近似图像L0
L0=double(L0);
L0max=max(max(L0));
c=0.3;s=2;
T1 = 0;
T2 = (1-c)*L0max;
k1=0.6; k2=s;

BI = Idenoise-L0;% 第一层高频边缘BI

 %%   对BI作非线性插值后得到newBI
newBI=BI;

for i=1:H
    for j=1:W
        if abs(BI(i,j))<=T1
            newBI(i,j)=k1*BI(i,j);
        else if (abs(BI(i,j))>T1)&(abs(BI(i,j))<=T2)
                newBI(i,j)=sign(BI(i,j))*(k2*abs(BI(i,j))+T1*(k1-k2));
            end
        end
    end
end
%

%%    对newBI作高通滤波得到增强后的高频边缘BI
hH=[-1/16,1/4,-3/8,1/4,-1/16];%[-1,2,-1]/2;
for i=1:length(hH)
    for j=1:length(hH)
        hH2D(i,j)=hH(i)*hH(j);
    end
end

BI=imfilter(newBI,hH2D,'replicate');     %修正后的边缘


BI=double(BI);
Irecover=newBI+L0;

for i=1:H
    for j=1:W
        if Irecover(i,j)<0
            Irecover(i,j)=0;
        else if Irecover(i,j)>255
                Irecover(i,j)=255;
            end
        end
    end
end

%%
EP1D=[-0.15,0.25,0.7,0.25,-0.15];
for i=1:length(EP1D)
    for j=1:length(EP1D)
        EP2D(i,j)=EP1D(i)*EP1D(j);
    end
end
Irepro = imfilter(Irecover,EP2D,'replicate');


figure,imshow(uint8(B),[]);
title('原图');
figure,imshow(uint8(Irecover),[]);
title(['高频非线性增强后的图像']);

figure,imshow(uint8(Irepro),[]);
title(['非线性增强后再补偿的图像']);

3.运行结果

 

 

 

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

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

相关文章

关于visual studio 2010 及以上版本 引入boost库的最新解决方法

之前没有怎么用到boost库&#xff0c;出来实习需要去编译一些代码&#xff0c;需要引入boost第三方库&#xff0c;在这过程中&#xff0c;一直出现 LINK : fatal error LNK1104: 无法打开文件“libboost_filesystem-vc100-mt-gd-x3 错误&#xff0c; 但是也确实是跟其他教程学过…

BUUCTF [GXYCTF2019] CheckIn 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 密文&#xff1a; dikqTCpfRjA8fUBIMD5GNDkwMjNARkUwI0BFTg解题思路&#xff1a; 1、观察密文&#xff0c;一眼Base64加密&#xff0c;使用在线工具Base64加解密&#xff0c;得到另一串密文。 v)*L*_F0<}H0>…

Apifox|API 文档和开发闭环初体验

Apifox是一款集文档、接口定义、数据模拟、自动化测试为一体的接口协作平台。 据功能介绍&#xff0c;基本总结Apifox Postman Swagger Mock JMeter 既然评的文章那么多&#xff0c;掀起了一阵子热度&#xff0c;究竟哪些功能&#xff1a; 用下来有哪些体会&#xff1a;…

Web3.0 应用开发:选择合适的框架和工具至关重要

随着 Web3.0 时代的到来&#xff0c;区块链技术的普及和应用让去中心化的应用开发变得更加可行。然而&#xff0c;要开发出高效、稳定和安全的 Web3.0 应用&#xff0c;选择合适的框架和工具至关重要。本文将介绍 Web3.0 应用开发的关键因素&#xff0c;帮助开发者做出明智的选…

【Vue+Django】Training Management Platform Axios并发请求 - 20230703

需求陈述 由于API是特定单位/特定类别/特定教学方式的数据&#xff0c;故汇总数据需要循环请求不同单位/不同类别/不同教学方式。 技术要点 1.axios并发请求 2.JS for循环 3.Vue数组中出现 ob :Observer无法取值问题的解决方法 4.将数据转化为数组 5.一次请求所有数据后&…

交安三类人员专职安全生产管理人员(c证)考试题库及答案(主观题)

本题库是根据最新考试大纲要求&#xff0c;结合近年来考试真题的重难点进行汇编整理组成的全真模拟试题&#xff0c;考生们可以进行专项训练&#xff0c;查漏补缺巩固知识点。本题库对热点考题和重难点题目都进行了仔细的整理和编辑&#xff0c;相信考生在经过了针对性的刷题练…

计算机由于找不到d3dx9_35.dll,无法启动软件游戏的三个修复方法

在打开游戏的时候&#xff0c;计算机提示由于找不到d3dx9_35.dll&#xff0c;无法正常启动运行。这个是为什么呢&#xff1f;d3dx9_35.dll是DirectX 9.0里面的一个动态连结库文件&#xff0c;它包含了Direct3D、DirectPlay几个组件的二进制文件&#xff0c;为软件提供了多媒体图…

Cisco Catalyst 8000 Series Edge Platforms, IOS XE Release Dublin-17.11.01a ED

Cisco Catalyst 8000 Series Edge Platforms, IOS XE Release Dublin-17.11.01a ED Cisco Catalyst 8000 边缘平台系列 请访问原文链接&#xff1a;https://sysin.org/blog/cisco-catalyst-8000/&#xff0c;查看最新版。原创作品&#xff0c;转载请保留出处。 作者主页&…

【Matlab】智能优化算法_多元宇宙优化算法MVO

【Matlab】智能优化算法_多元宇宙优化算法MVO 1.背景介绍2.数学模型3.文件结构4.详细代码及注释4.1 func_plot.m4.2 Get_Functions_details.m4.3 initialization.m4.4 main.m4.5 MVO.m4.6 RouletteWheelSelection.m 5.运行结果6.参考文献 1.背景介绍 大爆炸理论讨论了我们的宇宙…

基于CentOS7安装配置docker与docker-compose

Docker是基于Go语言实现的云开源项目。 Docker的主要目标是“Build&#xff0c;Ship and Run Any App,Anywhere”&#xff0c;也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理&#xff0c;使用户的APP&#xff08;可以是一个WEB应用或数据库应用等等&#xff09…

解决方案︱视频孪生智慧场馆解决方案

一、方案概述 视频孪生场馆综合管理系统&#xff0c;是综合数字孪生、三维地理信息、视频监控等技术于一体的创新性综合管理平台。 平台基于三维地理&#xff08;3D GIS&#xff09;引擎&#xff0c;综合运用了人工智能、大数据、三维GIS、遥感、计算机图形学等新一代空间信息…

【PCL】(四)点云可视化

文章目录 可视化CloudViewer 可视化PCLVisualizer 可视化可视化单个云添加一些颜色RGB点云指定颜色 法线和其他信息绘制形状多个窗口交互自定义 可视化 CloudViewer 可视化 将【PCL】&#xff08;一&#xff09;PCL基本数据结构PointCloud与原生文件格式PCD末尾的数据保存到m…

blender 之点云渲染(论文渲图)

blender 之点云渲染&#xff08;论文渲图&#xff09; 一、导入点云1.新建2.导入点云3.位置移动&放大缩小 二、Geometry Nodes实体化点云1.新建节点2.实体化 三、给实体化点云添加材质四、设置渲染引擎更换为Cycles。 五、对准视角1.新建一个球2.创建相机视角跟踪3.将uv球挪…

阿里巴巴java开发手册

前言 以下内容整理来自阿里巴巴java开发手册&#xff0c;方便在线查看。 一、编程规约 1.1 命名风格 【强制】代码中的命名均不能以下划线或美元符号开始&#xff0c;也不能以下划线或美元符号结束。 反例&#xff1a;_name / __name / O b j e c t / n a m e / n a m e O…

【论文阅读笔记】Analyzing Federated Learning through an Adversarial Lens

个人阅读笔记&#xff0c;如有错误欢迎指出 ICML 2019 [1811.12470] Analyzing Federated Learning through an Adversarial Lens (arxiv.org) 问题&#xff1a; 传统模型攻击容易被服务器通过精度检测以及权重分析检测出来&#xff0c;本文意在找到一种投毒方法绕过服…

Yolov8优化:最新移动端高效网络架构 CloFormer: 注意力机制与卷积的完美融合 | 清华团队2023 即插即用系列

💡💡💡本文属于原创独家改进:引入CloFormer 中的 AttnConv,上下文感知权重使得模型能够更好地适应输入内容。相比于局部自注意力机制,引入共享权重使得模型能够更好地处理高频信息,从而提高性能。 注意力机制与卷积的完美融合 AttnConv | 亲测在多个数据集能够实现…

React 编译之后修改服务地址

编写react 的项目中&#xff0c;我们要调用后台服务的地址&#xff0c;当前后台服务器的地址在是写Axios相关的js文件中&#xff0c; 但是项目我们在yarn build之后&#xff0c;变成了这样&#xff1a; 我们根本没有办法修改相关冯server_address,这样就产生了很大的局限性&…

24JS15——DOM

文章目录 一、DOM简介1、什么是DOM2、DOM树 二、获取元素1、如何获取页面元素2、根据id获取3、根据标签名获取4、通过HTML5新增的方法获取5、获取特殊元素body html 三、事件基础1、事件概述2、事件三要素3、执行事件的步骤 四、操作元素1、改变元素内容2、常用元素的属性操作3…

2017计算机学科夏令营上机考试

目录 A:判决素数个数【水题】 B:编码字符串(string)【水题】 C:岛屿周长(matrix)【深搜或者找规律】 D:Safecracker【深搜或者暴力不水】 E:怪盗基德的滑翔翼【动态规划】 F:Full Tank?【图论最短路/BFS优先队列】 G:实现堆结构 H:Subway&#xff08;迪杰斯特拉算法&a…

理解ASEMI代理海矽美快恢复二极管SFP3012A的性能与应用

编辑-Z 在电子元件领域&#xff0c;快恢复二极管SFP3012A是一种重要的半导体器件&#xff0c;它在电路设计中扮演着至关重要的角色。本文将深入探讨SFP3012A的性能特点和应用领域&#xff0c;帮助读者更好地理解和使用这种二极管。 一、SFP3012A的性能特点 快恢复二极管SFP301…