2017-12-22 15:17:11 qq_25248517 阅读数 641
  • Google开发大牛带你学 AI:入门到实战(Keras/...

    近几年人工智能已成为最热门的技术,掌握人工智能技术也能够在面试中为自己赢得更多的薪酬。因此,大部分开发者都有想要入门 AI 的想法,但在平时做的业务中,很少有机会全方位系统性的实践 AI 的数据处理、模型训练、参数调优和服务部署的全流程,所以这方面的锻炼肯定不多。 最后3天,原价 299元!立减230元,仅需69元买完就能学! 注意:仅剩100名额 彭靖田老师结合自己过去多年 AI 一线工作中积累的实战经验,为 AI 理论知识和4个 AI 应用都设计了真实的代码实例。希望用理论加实践的方式,手把手带你系统、全面、高强度的学习深度学习,直观高效地提高你的人工智能基础和实践能力,教会你如何实现自己的 AI 模型,带你进行模型调优和服务部署,帮你跨过知识到应用的鸿沟。 作者简介 彭靖田,Google Developer Experts。曾为 TensorFlow Top 40 的贡献者,著书《深入理解TensorFlow》,是国内第一本深度剖析 Google AI 框架的畅销书。曾从0到1深入参与了华为 2012 实验室深度学习平台和华为深度学习云服务的设计与研发工作。现任,品览Pinlan联合创始人兼CTO,刚完成 Pre-A 轮数千万融资。 课程设计 一、课程会讲哪些知识? 整个课程以理论加实战为核心,从基础原理、代码案例、模型设计、训练流程、模型评估、参数调优、服务部署铺开,带你手把手入门深度学习,一次性系统掌握实践 AI 的所有知识和流程。下面是课程的知识概览思维导图。 课程包含思维导图上的所有内容(价值299元)前500名立减130元,仅69元买完就能学! 二、课程是怎么设计的?   基础篇,首先帮你梳理人工智能技术发展脉络,让你理解深度学习凭什么成为主流,并结合代码案例详细讲解人工智能的基础概念:神经元、神经网络层、张量、计算方法和梯度优化。   入门篇,手把手教你搭建自己的模型开发环境,帮你搞懂人工智能模型训练的计算原理和实践工具 Keras/Tensorflow ,带你系统掌握数据预处理、模型评估、解决过拟合问题的实践技能。   实战篇,将带你从0到1 实践模型设计、代码实现、参数调优、特征提取、模型微调等关键核心技巧,并告诉你如何平衡数据与模型的复杂度。4 个实战案例从经典的猫狗分类问题出发,由简易难地带你深入学习,最终带你实践技术领先的目标检测YoloV3 和图像分类MobileNet 模型,并落地应用。   三、需要什么基础? 1. 课程面向所有对深度学习感兴趣的程序员,即使没有任何人工智能和计算机科学背景,也可以学习和掌握。

    1750 人正在学习 去看看 彭靖田

一、图像的分类

1.二值图像
二值图像(Binary Image)是指将图像上的每一个像素只有两种可能的取值或灰度等级状态,人们经常用黑白、B&W、单色图像表示二值图像。
二值图像是指在图像中,灰度等级只有两种,也就是说,图像中的任何像素不是0就是1,再无其他过渡的灰度值。
二值图像是指:每个像素不是黑就是白,其灰度值没有中间过渡的图像。二值图像一般用来描述文字或者图形,其优点是占用空间少,缺点是,当表示人物,风景的图像时,二值图像只能描述其轮廓,不能描述细节。这时候要用更高的灰度级。
二值图像是每个像素只有两个可能值的数字图像。人们经常用黑白B&W、单色图像表示二值图像,但是也可以用来表示每个像素只有一个采样值的任何图像,例如灰度图像等。
2.灰度图像
灰度数字图像是每个像素只有一个采样颜色的图像。这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑白两种颜色,灰度图像在黑色与白色之间还有许多级的颜色深度。
一幅完整的图像,是由红色、绿色、蓝色三个通道组成的。红色、绿色、蓝色三个通道的缩览图都是以灰度显示的。用不同的灰度色阶来表示“ 红,绿,蓝”在图像中的比重。通道中的纯白,代表了该色光在此处为最高亮度,亮度级别是255。
通道是整个Photoshop显示图像的基础。色彩的变动,实际上就是间接在对通道灰度图进行调整。通道是Photoshop处理图像的核心部分,所有的色彩调整工具都是围绕在这个核心周围使用的。
在计算机领域中,这类图像通常显示为从最暗黑色到最亮的白色的灰度,尽管理论上这个采样可以任何颜色的不同深浅,甚至可以是不同亮度上的不同颜色。灰度图像与黑白图像不同,在计算机图像领域中黑白图像只有黑色与白色两种颜色;灰度图像在黑色与白色之间还有许多级的颜色深度。但是,在数字图像领域之外,“黑白图像”也表示“灰度图像”,例如灰度的照片通常叫做“黑白照片”。在一些关于数字图像的文章中单色图像等同于灰度图像,在另外一些文章中又等同于黑白图像。
3.假彩色图像
假彩色增强所处理的图像通常是一幅自然彩色图像或同一景多光谱图像。利用假彩色合成的图像称为假彩色图像,它是彩色增强图像的一种。利用假彩色图像可以突出相关专题信息,提高图像视觉效果,从图像中提取更有用的定量化信息。通过假彩色处理的图像,可以获得人眼所分辨不出、无法准确获得的信息,便于地物识别,提取更加有用的专题信息。
人眼只能区分20余种不同等级的灰度,却可辨别几千种不同的色度与不同亮度。真彩色图像是指符合人眼视觉习惯的颜色,即影像与实际地貌相一致。由于在进行图像分析时,肉眼难以鉴别色彩相近的各个波段,因此,将真彩色图像转变为与实际地貌不一致的色彩,可以提高图像的可鉴别度。假彩色图像就是图像的彩色显示中的一种,也是在进行遥感影像监督分类等过程时常常运用的图像。
假彩色图像是通过不同波段合成得到的彩色影像,目的主要有两个:一个是使感兴趣的目标呈现奇异的彩色或置于奇特的色彩环境中,从而更受人注目;一个是为了使景物呈现出与人眼色相匹配的颜色,以突出相关的专题信息,提高图像的视觉效果,使分析者能够更容易地识别图像内容,从图像中提取更有用的定量化信息。例如,人眼视网膜中锥状细胞对绿色最敏感,因此,若把原来颜色不易辨认的目标经假彩色处理呈现绿色,就能大大提高人眼对目标的分辨力。
彩色合成图像显示,即三幅8bit图像以R、G、B方式存于存储器内,通过三个8bit分离的数模变换器(DAC)连续读每个R、G、B图像的同一像元亮度值,并变换为模拟信号。假彩色图像则是彩色图像增强的一种。
若红波段(R)、绿波段(G)、蓝波段(B)三幅图像分别赋予R、G、B三色,所生成的是“真彩色”或“天然”彩色合成图像,如TM3、2、1(RGB);若三幅其他任何波段图像赋予R、G、B三色,则得假彩色合成图像,如TM1、2、3(RGB),TM3、5、4(RGB)等;若近红外波段(NIR)、红波段(R)、绿波段(G)三幅图像分别赋予R、G、B三色,则得标准假彩色合成图像,如TM4、3、2(RGB),SPOT3、2、1(RGB)等;在标准假彩色合成图像中,三种主要的地表覆盖类型:植被呈红色系列,水体呈蓝色系列,裸地呈浅色系列,易于识别[2]  。
4.多通道彩色图像
个人理解,多通道的例如rgb图,每个像素点都有3个值表示 ,所以就是3通道。也有4通道的图。单通道的图像,每个像素点只有1个值表示颜色,即灰度图。(也有3通道的灰度图,3通道灰度图只有一个通道有值,其他两个通道的值都是零)。
5.多光谱图像
多光谱图像是由多个波段对同一目标进行反复拍摄而得道的图像,由于目标中的各各物体对同一波段的敏感性不一样,因此多光谱图像中的每幅图像之间也有一定的不同之处。 
6.三维图像
立体图视觉上层次分明色彩鲜艳,具有很强的视觉冲击力,让观看的人驻景时间长,留下深刻的印象。立体图给人以真实、栩栩如生,人物呼之欲出,有身临其境的感觉,有很高的艺术欣赏价值。利用立体图像包装企业,使企业形象更加鲜明,突出企业实力和档次,增加影响力!更能突出产品的高品质和高档次。也可以做出色彩艳丽、层次分明的立体婚纱、照片,是当前影像业最新的卖点之一。
7.视频
视频Video)泛指将一系列静态影像电信号方式加以捕捉纪录处理储存传送与重现的各种技术。连续的图像变化每秒超过24(frame)画面以上时,根据视觉暂留原理,人眼无法辨别单幅的静态画面;看上去是平滑连续的视觉效果,这样连续的画面叫做视频。视频技术最早是为了电视系统而发展,但现在已经发展为各种不同的格式以利消费者将视频记录下来。网络技术的发达也促使视频的纪录片段以串流媒体的形式存在于因特网之上并可被电脑接收与播放。视频与电影属于不同的技术,后者是利用照相术将动态的影像捕捉为一系列的静态照片






2019-03-23 12:00:50 hawktony 阅读数 631
  • Google开发大牛带你学 AI:入门到实战(Keras/...

    近几年人工智能已成为最热门的技术,掌握人工智能技术也能够在面试中为自己赢得更多的薪酬。因此,大部分开发者都有想要入门 AI 的想法,但在平时做的业务中,很少有机会全方位系统性的实践 AI 的数据处理、模型训练、参数调优和服务部署的全流程,所以这方面的锻炼肯定不多。 最后3天,原价 299元!立减230元,仅需69元买完就能学! 注意:仅剩100名额 彭靖田老师结合自己过去多年 AI 一线工作中积累的实战经验,为 AI 理论知识和4个 AI 应用都设计了真实的代码实例。希望用理论加实践的方式,手把手带你系统、全面、高强度的学习深度学习,直观高效地提高你的人工智能基础和实践能力,教会你如何实现自己的 AI 模型,带你进行模型调优和服务部署,帮你跨过知识到应用的鸿沟。 作者简介 彭靖田,Google Developer Experts。曾为 TensorFlow Top 40 的贡献者,著书《深入理解TensorFlow》,是国内第一本深度剖析 Google AI 框架的畅销书。曾从0到1深入参与了华为 2012 实验室深度学习平台和华为深度学习云服务的设计与研发工作。现任,品览Pinlan联合创始人兼CTO,刚完成 Pre-A 轮数千万融资。 课程设计 一、课程会讲哪些知识? 整个课程以理论加实战为核心,从基础原理、代码案例、模型设计、训练流程、模型评估、参数调优、服务部署铺开,带你手把手入门深度学习,一次性系统掌握实践 AI 的所有知识和流程。下面是课程的知识概览思维导图。 课程包含思维导图上的所有内容(价值299元)前500名立减130元,仅69元买完就能学! 二、课程是怎么设计的?   基础篇,首先帮你梳理人工智能技术发展脉络,让你理解深度学习凭什么成为主流,并结合代码案例详细讲解人工智能的基础概念:神经元、神经网络层、张量、计算方法和梯度优化。   入门篇,手把手教你搭建自己的模型开发环境,帮你搞懂人工智能模型训练的计算原理和实践工具 Keras/Tensorflow ,带你系统掌握数据预处理、模型评估、解决过拟合问题的实践技能。   实战篇,将带你从0到1 实践模型设计、代码实现、参数调优、特征提取、模型微调等关键核心技巧,并告诉你如何平衡数据与模型的复杂度。4 个实战案例从经典的猫狗分类问题出发,由简易难地带你深入学习,最终带你实践技术领先的目标检测YoloV3 和图像分类MobileNet 模型,并落地应用。   三、需要什么基础? 1. 课程面向所有对深度学习感兴趣的程序员,即使没有任何人工智能和计算机科学背景,也可以学习和掌握。

    1750 人正在学习 去看看 彭靖田

一、直接设置Nodata数值为指定颜色或透明色

二、去除图像背景(Mask 函数计算法)

0、初始图像(有黑色的背景)

1、打开Windows——Image Analysis

2、添加掩膜函数

3、设置背影区域数值参数

4、执行确定,创建新的去背景图层

 

 

2019-07-19 11:44:30 hcxy729 阅读数 487
  • Google开发大牛带你学 AI:入门到实战(Keras/...

    近几年人工智能已成为最热门的技术,掌握人工智能技术也能够在面试中为自己赢得更多的薪酬。因此,大部分开发者都有想要入门 AI 的想法,但在平时做的业务中,很少有机会全方位系统性的实践 AI 的数据处理、模型训练、参数调优和服务部署的全流程,所以这方面的锻炼肯定不多。 最后3天,原价 299元!立减230元,仅需69元买完就能学! 注意:仅剩100名额 彭靖田老师结合自己过去多年 AI 一线工作中积累的实战经验,为 AI 理论知识和4个 AI 应用都设计了真实的代码实例。希望用理论加实践的方式,手把手带你系统、全面、高强度的学习深度学习,直观高效地提高你的人工智能基础和实践能力,教会你如何实现自己的 AI 模型,带你进行模型调优和服务部署,帮你跨过知识到应用的鸿沟。 作者简介 彭靖田,Google Developer Experts。曾为 TensorFlow Top 40 的贡献者,著书《深入理解TensorFlow》,是国内第一本深度剖析 Google AI 框架的畅销书。曾从0到1深入参与了华为 2012 实验室深度学习平台和华为深度学习云服务的设计与研发工作。现任,品览Pinlan联合创始人兼CTO,刚完成 Pre-A 轮数千万融资。 课程设计 一、课程会讲哪些知识? 整个课程以理论加实战为核心,从基础原理、代码案例、模型设计、训练流程、模型评估、参数调优、服务部署铺开,带你手把手入门深度学习,一次性系统掌握实践 AI 的所有知识和流程。下面是课程的知识概览思维导图。 课程包含思维导图上的所有内容(价值299元)前500名立减130元,仅69元买完就能学! 二、课程是怎么设计的?   基础篇,首先帮你梳理人工智能技术发展脉络,让你理解深度学习凭什么成为主流,并结合代码案例详细讲解人工智能的基础概念:神经元、神经网络层、张量、计算方法和梯度优化。   入门篇,手把手教你搭建自己的模型开发环境,帮你搞懂人工智能模型训练的计算原理和实践工具 Keras/Tensorflow ,带你系统掌握数据预处理、模型评估、解决过拟合问题的实践技能。   实战篇,将带你从0到1 实践模型设计、代码实现、参数调优、特征提取、模型微调等关键核心技巧,并告诉你如何平衡数据与模型的复杂度。4 个实战案例从经典的猫狗分类问题出发,由简易难地带你深入学习,最终带你实践技术领先的目标检测YoloV3 和图像分类MobileNet 模型,并落地应用。   三、需要什么基础? 1. 课程面向所有对深度学习感兴趣的程序员,即使没有任何人工智能和计算机科学背景,也可以学习和掌握。

    1750 人正在学习 去看看 彭靖田

一、图像处理背景介绍

二、图像处理数据集介绍

2019-10-12 14:04:59 a1326243249 阅读数 37
  • Google开发大牛带你学 AI:入门到实战(Keras/...

    近几年人工智能已成为最热门的技术,掌握人工智能技术也能够在面试中为自己赢得更多的薪酬。因此,大部分开发者都有想要入门 AI 的想法,但在平时做的业务中,很少有机会全方位系统性的实践 AI 的数据处理、模型训练、参数调优和服务部署的全流程,所以这方面的锻炼肯定不多。 最后3天,原价 299元!立减230元,仅需69元买完就能学! 注意:仅剩100名额 彭靖田老师结合自己过去多年 AI 一线工作中积累的实战经验,为 AI 理论知识和4个 AI 应用都设计了真实的代码实例。希望用理论加实践的方式,手把手带你系统、全面、高强度的学习深度学习,直观高效地提高你的人工智能基础和实践能力,教会你如何实现自己的 AI 模型,带你进行模型调优和服务部署,帮你跨过知识到应用的鸿沟。 作者简介 彭靖田,Google Developer Experts。曾为 TensorFlow Top 40 的贡献者,著书《深入理解TensorFlow》,是国内第一本深度剖析 Google AI 框架的畅销书。曾从0到1深入参与了华为 2012 实验室深度学习平台和华为深度学习云服务的设计与研发工作。现任,品览Pinlan联合创始人兼CTO,刚完成 Pre-A 轮数千万融资。 课程设计 一、课程会讲哪些知识? 整个课程以理论加实战为核心,从基础原理、代码案例、模型设计、训练流程、模型评估、参数调优、服务部署铺开,带你手把手入门深度学习,一次性系统掌握实践 AI 的所有知识和流程。下面是课程的知识概览思维导图。 课程包含思维导图上的所有内容(价值299元)前500名立减130元,仅69元买完就能学! 二、课程是怎么设计的?   基础篇,首先帮你梳理人工智能技术发展脉络,让你理解深度学习凭什么成为主流,并结合代码案例详细讲解人工智能的基础概念:神经元、神经网络层、张量、计算方法和梯度优化。   入门篇,手把手教你搭建自己的模型开发环境,帮你搞懂人工智能模型训练的计算原理和实践工具 Keras/Tensorflow ,带你系统掌握数据预处理、模型评估、解决过拟合问题的实践技能。   实战篇,将带你从0到1 实践模型设计、代码实现、参数调优、特征提取、模型微调等关键核心技巧,并告诉你如何平衡数据与模型的复杂度。4 个实战案例从经典的猫狗分类问题出发,由简易难地带你深入学习,最终带你实践技术领先的目标检测YoloV3 和图像分类MobileNet 模型,并落地应用。   三、需要什么基础? 1. 课程面向所有对深度学习感兴趣的程序员,即使没有任何人工智能和计算机科学背景,也可以学习和掌握。

    1750 人正在学习 去看看 彭靖田

题目

运用图像处理的方法去除上图中背景黑色沁墨印记。
picture1

解决办法

方案一

查看该图的灰度分布直方图如下
在这里插入图片描述
最简单的方法就是转化为二值图,首先转化为灰度图,然后转化为二值图

%matlab代码
c=rgb2gray(k);%转化为灰度图
c=im2bw(k,0.5);%将灰度图转化为二值图

得到如下结果
在这里插入图片描述
通过不断调整im2bw的参数得到0.4为最佳,如下
在这里插入图片描述

方案二

为了更加还原图片,我们只需去掉背景字迹即可,即将字迹颜色转换为背景色,通过PS等专业软件可以方便找到字迹颜色区间与背景色的颜色区间

%matlab代码
b=c;%创建c的备份
[m,n]=size(c);%读取c的纵横像素点
for i=1:m-1
    for j=1:n-1
        if c(i,j)>145 & c(i,j)<165
            b(i,j)=170;%将字迹部分转化为背景色
        end
    end
end

得到结果如下
在这里插入图片描述
通过对比,我们很容易发现这种处理方法达到了较好的效果,如果大家有更好地处理办法欢迎交流

2017-12-14 17:50:13 lovebaby859450415 阅读数 1577
  • Google开发大牛带你学 AI:入门到实战(Keras/...

    近几年人工智能已成为最热门的技术,掌握人工智能技术也能够在面试中为自己赢得更多的薪酬。因此,大部分开发者都有想要入门 AI 的想法,但在平时做的业务中,很少有机会全方位系统性的实践 AI 的数据处理、模型训练、参数调优和服务部署的全流程,所以这方面的锻炼肯定不多。 最后3天,原价 299元!立减230元,仅需69元买完就能学! 注意:仅剩100名额 彭靖田老师结合自己过去多年 AI 一线工作中积累的实战经验,为 AI 理论知识和4个 AI 应用都设计了真实的代码实例。希望用理论加实践的方式,手把手带你系统、全面、高强度的学习深度学习,直观高效地提高你的人工智能基础和实践能力,教会你如何实现自己的 AI 模型,带你进行模型调优和服务部署,帮你跨过知识到应用的鸿沟。 作者简介 彭靖田,Google Developer Experts。曾为 TensorFlow Top 40 的贡献者,著书《深入理解TensorFlow》,是国内第一本深度剖析 Google AI 框架的畅销书。曾从0到1深入参与了华为 2012 实验室深度学习平台和华为深度学习云服务的设计与研发工作。现任,品览Pinlan联合创始人兼CTO,刚完成 Pre-A 轮数千万融资。 课程设计 一、课程会讲哪些知识? 整个课程以理论加实战为核心,从基础原理、代码案例、模型设计、训练流程、模型评估、参数调优、服务部署铺开,带你手把手入门深度学习,一次性系统掌握实践 AI 的所有知识和流程。下面是课程的知识概览思维导图。 课程包含思维导图上的所有内容(价值299元)前500名立减130元,仅69元买完就能学! 二、课程是怎么设计的?   基础篇,首先帮你梳理人工智能技术发展脉络,让你理解深度学习凭什么成为主流,并结合代码案例详细讲解人工智能的基础概念:神经元、神经网络层、张量、计算方法和梯度优化。   入门篇,手把手教你搭建自己的模型开发环境,帮你搞懂人工智能模型训练的计算原理和实践工具 Keras/Tensorflow ,带你系统掌握数据预处理、模型评估、解决过拟合问题的实践技能。   实战篇,将带你从0到1 实践模型设计、代码实现、参数调优、特征提取、模型微调等关键核心技巧,并告诉你如何平衡数据与模型的复杂度。4 个实战案例从经典的猫狗分类问题出发,由简易难地带你深入学习,最终带你实践技术领先的目标检测YoloV3 和图像分类MobileNet 模型,并落地应用。   三、需要什么基础? 1. 课程面向所有对深度学习感兴趣的程序员,即使没有任何人工智能和计算机科学背景,也可以学习和掌握。

    1750 人正在学习 去看看 彭靖田

数字图像处理的MATLAB实现(第二版) - 第二章学习总结


灰度变换与空间滤波

  • 亮度(或灰度变换)
  • 空间滤波
  • 模糊图像处理

1.背景知识

空域处理思想由公式(1)表示:

g(x,y)=T[f(x,y)](1)

其中,f(x,y)为输入图像,g(x,y)为处理后的图像,T为对图像的f的算子,作用于点(x,y)的领域。

2.灰度变换函数

由于输出图像仅仅取决于点的灰度值,而不是取决于点的领域,因此灰度变换函数通常如公式(2)所示:

s=T(r)(2)

其中,r表示图像f中的灰度,s表示图像g中的灰度。两者在图像中处于相同的坐标(x,y)处。

2.1灰度图像进行灰度变换的基本图像处理工具箱函数

g=imadjust(f, [low_inhigh_in], [low_outhigh_out], gamma)

其中,将 low_inhigh_in 之间的值映射到 low_outhigh_out 之间,而超出该范围的值都被截去,小于 low_in 的值映射为 low_out ,大于 high_in 的值映射为 high_out 。参数 gamma 指明了由 f 映射生成图像 g 时的曲线。如果 gamma 的值小于1,映射被加权至较亮的输出,反之较暗的输出。

Low_High=stretchlim(f, tol)

其中,Low_High 是低和高均受限的两元素向量,可用于完成对比度拉伸。默认情况下,Low_High 是指定灰度图像f中所有像素值底部和顶部饱和度的1%,tol 是两元素向量[low_frachigh_frac],指定了图像低和高像素值饱和度的百分比。


测试:

test.m
f = imread('Fig0203(a).tif'):
% default
g1 = imadjust(f, [0 1], [1, 0]);

% 调用工具箱的负片函数
g = imcomplement(f);

% 扩展亮度[0.5 0.75]->[0 1]
g2 = imadjust(f, [0.5 0.75], [0 1]);

% 使用gamma增强
g3 = imadjust(f, [ ], [ ], 2);

% 使用stretchlim函数
g4 = imadjust(f, stretchlim(f), [ ]);

2.2. 针对灰度变换的自建M函数

tofloat 函数
Logicaluint8uint16int16类的图像转换成 single类,配合应用适当的比例因子。下面附上附注释的完整代码。


function [out, revertclass] = tofloat(in)
%TOFLOAT Convert image to floating point
%  [OUT, REVERTCLASS] = TOFLOAT(IN) converts the input image IN to
%  floating-point. If IN is a double or a single image, then OUT
%  equals IN. Otherwise, OUT equals IM2SINGLE(IN). REVERTCLASS is
%  a function handle that can be used to convert back to the class
%  of IN.

identity = @(x) x;       % 函数句柄
tosingle = @im2single;   % 函数句柄

table = {'uint8',   tosingle, @im2uint8
         'uint16',  tosingle, @im2uint16
         'int16',   tosingle, @im2int16
         'logical', tosingle, @logical
         'double',  identity, identity
         'single',  identity, identity};

% 返回 in 在表中第一列的第几个位置
classIndex = find(strcmp(class(in), table(:, 1)));

% 如果是classIndex矩阵为空,则isempty 返回 1
if isempty(classIndex)
    error('Unsupported input image class.');
end

% 这里table是cell数据类型,这里用'{ }', 表示在对应位置的输出值
% out = table{classIndex, 2} = 对应的句柄函数
out = table{classIndex, 2}(in);

revertclass = table{classIndex, 3}; % revertclass= @(x) x
end

gscale 函数
用于标定灰度的M-函数

我们通常希望把图像标度在全尺度,即最大范围[0, 255]或[0, 65535],不然当我们想利用8位或者16位格式保存或观看一幅图像时,就会出现问题。
gscale 函数的目的就是实现该功能。


function g =gscale(f, varargin)
% GSCALE Scales the intensity of the input image.
% G = GSCALE(F, 'full8') scales the intensities of F to the full
% 8-bit intensity range [0, 255]. This is the default if there is
% only one input argument.
%
% G = GSCALE(F, 'full16') scales the intensities of F to the full
% 16-bit intensity range [0, 65535].
% G = GSCALE(F, 'minmax', LOW, HIGH) scales the intensities of F
% to the range [LOW, HIGH]. These vaules must be provided, and they
% must be in the range [0, 1], independently of the class of the 
% input. GSCALE performs any necessary scaling. If the input is of
% class double, and its vaules are not in the range [0, 1], then 
% GSCALE scales it to  this range before processing.
% 
% The class of the output is the same as the class of the input.

% length 计算varargin中的最大向量尺度
if length(varargin) == 0   % If only one argument it must be f.
    method = 'full8';
else
    method = varargin{1};
end

% strcmp 比较class(f) 是否是double类型 如果是则返回1 
% max(f(:) > 1) 如果f中有大于1的元素则返回逻辑1
if strcmp(class(f), 'double') & (max(f(:)) > 1 | min(f(:)) < 0)
    f = mat2gray(f);
end

% Perform the specified scaling.
switch method
case 'full8'
    g = im2uint8(mat2gray(double(f)));   % im2uint8 将f转换为8位无符号整形
case 'full16'
    g = im2uint16(mat2gray(double(f)));  % im2uint16 将f转换为16位无符号整形
case 'minmax'
    low = varargin{2}; high = varargin{3};
    if low > 1 | low < 0 high > 1 | high < 0
        error('Parameters low and high must be in the range [0, 1].');
    end
    if strcmp(class(f), 'double')
        low_in = min(f(:));
        high_in = max(f(:));
    elseif strcmp(class(f), 'uint8')
        low_in = double(min(f(:)))./255;
        high_in = double(max(f(:)))./255;
    elseif strcmp(class(f), 'uint16')
        low_in = double(min(f(:)))./65535;
        high_in = double(max(f(:)))./65535;
    else
    % imadjust automatically matches the class of the input.
    g = imadjust(f, [low_in high_in], [low high]);
end

intrans 函数

该函数整合“负片变换”、“对数变换”、“gamma变换”、“对比度扩展”。

function g = intrans(f, method, varargin)

% Verify the correct number of inputs.
error(nargchk(2, 4, nargin))
if strcmp(method, 'log')
    % The log transform handles image classes differently than the 
    % others transforms, so let the logTranform function handle that
    % and then return.
    g = logTranform(f, varargin{:});
    return;
end

% If f is floating point, check to see if it is in the range [0, 1]
% If it is not, force it to be using function mat2gray.
if isfloat(f) && (max(f(:)) > 1 || min(f(:)) < 0)
    f = mat2gray(f);
end
[f, revertclass] = tofloat(f); % Store class of f for use later.

% Perform the intensity transformation specified
switch method
case 'neg'
    g = imcomplement(f);

case 'gamma'
    g = gammaTransform(f, varargin{:});

case 'stretch'
    g = stretchTransform(f, varargin{:});

case 'specified'
    g = spcfiedTransform(f, varargin{:});

otherwise
    error('Unknown enchancement method.');
end

% Convert to the class of the input image.
g = revertclass(g);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function g = gammaTransform(f, gamma)
g = imadjust(f, [ ], [ ], gamma);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function g = stretchTransform(f, varargin)
if isempty(varargin)
    % Use defaults.
    m = mean2(f);
    E = 4.0;
elseif length(varargin) == 2
    m = varargin{1};
    E = varargin{2};
else
    error('Incorrect number of inputs for the stretch method.');
end
g = 1./(1 + (m./f).^E);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function g = spcfiedTransform(f, txfun)
% f is floating point with vaules in the range [0 1].
txfun = txfun(:);  % Force it to be a column vector.
if any(txfun) > 1 || any(txfun) <= 0
    error('All elements of txfun must be in the range [0 1].');
end
T = txfun;
X = linspace(0, 1, numel(T))';
g = interpl(X, T, f);

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
function g = logTranform(f, varargin)
[f, revertclass] = tofloat(f);
if numel(varagin) >= 2
    if strcmp(varagin{2}, 'uint8')
        revertclass = @im2uint8;
    elseif strcmp(varagin{2}, 'uint16')
        revertclass = @im2uint16;
    else
        error('Unsupported CLASS option for "log" method.');
    end
end
if numel(varagin < 1)
    % Set default for C
    C = 1;
else
    C = varargin{1};
end
g = C * (log(1+f));
g = revertclass(g);
end

3. 直方图处理和函数绘图

3.1. 直方图

思想:“不同灰度级出现的概率”。如公式(3)所示:

p(rk)=h(rk)/n=nk/n(3)

其中,rk[0,G] 间隔内第k级灰度,nk为图像中出现rk这种灰度的像素数。对于浮点图像类,G=1.0
注:对于 uint8uint16G=L1

工具箱对应的梳理图像直方图的核心函数是 imhist ,其基本语法如下:

h=imhist(f,b)

其中,f 为输入图像,h 为直方图,b是用来形容直方图的“统计堆栈”的数目(若b不在此参数列表中,默认值是256)。“统计堆栈”仅仅是灰度的一小部分。例如:f 为一幅 uint8 类的图像,取b=2 ,然后灰度范围被分成[0 127]和[128 255]两部分,得到的直方图有两个值,h(1)=numel([0127])h(2)=numel([128255])


3.2. 直方图均衡化

假设灰度级为归一化在[0, 1]范围内的连续量,让pr(r)代表一幅给定图像的灰度级的概率密度函数PDF-1PDF-2。下标用来区分输入图像和输出图像的概率密度函数。假设我们对输入灰度进行下列变换,得到输出灰度级s。

s=T(r)=r0pr(w)dw(4)

式中的w 是积分虚变量。则:

ps(s)={10s10other(5)

简言之‘生成后的图像灰度级等概率,灰度级覆盖了整个[0, 1]范围,即实现了动态范围的扩展’对上式转到离散的灰度级。
sk=T(rk)=j=0kpr(rj)=j=0knjn(6)

公式(6)中,k=0,1,2,3,...,L1Sk 是输出图像的灰度值。对应输入图像的灰度值为rk

工具箱对应的直方图均衡化函数:

g=histeq(f,nlev)

其中,f为输入图像,nlev为输出图像设定的灰度级数。


3.3. 直方图规定化


4. 空间滤波

4.1. 线性空间滤波


4.2. 非线性空间滤波


5.模糊集合

脑部 CT 图像处理

阅读数 918

没有更多推荐了,返回首页