记录一下吧,本科专业对口专业设计院画图和工地打灰,我不太喜欢这两个工作。虽然感觉能考上,但是这一年有点学习惯了,考完了只感觉空虚,还是接着学点东西吧
记录一下学习的过程吧。

12月29日

工具箱,核心文件都是可读,可修改的。可以根据需求建造新的工具箱。

感兴趣的方面,航天航空方面,生物医学工程方面,机器人视觉方面。

1图像变换

傅里叶变换,沃尔什变换,离散余弦变换。空间域→变换域。
小波变换在时域和频域都具有良好的局部特性,应用广泛。

2图像编码压缩

3增强和复原

12月29日操作

点击这里跳转到这篇学习imread使用

1.2
打开
要把处理的图像放到bin里,或者就要把路径写全。

close all
figure('Name','Orignal')
figure('Name','A','Menubar','none')

保存

close all
figure('Name','Orignal')
figure('Name','A','Menubar','none')
saveas(gcf,'cm.jpg')
saveas(gcf,'cm')%默认为.fig
savefig('PeakFile.fig')%在当前路径下保存为peakfile.fig

图窗文件的打开

close all
openfig CM.fig

灰度处理

RGB2YCbCr RGB2Gray,其中 ycbcr中的Y 和 gray 都是表示灰度,这两种灰度有什么区别呢?
RGB2YCbCr RGB2Gray灰度的区别

简单来说,他们两RGB乘的数值不同,计算公式不同。FPGA上大部分转灰度都是使用Ycbcr中Y分量这个形式。

Y = 0.257R+0.564G+0.098*B+16

Gray = R0.299 + G0.587 + B*0.114

下面展示一些 内联代码片

%RGB_YCbCr
%RGB_YCbCr
clc;
clear all;
close all;  RGB_data = imread('lena.jpg');  figure;
imshow(RGB_data);
subplot(1,3,1)
imshow(RGB_data);
title('原始图像');%--------------------------------------------------------
R_data =    RGB_data(:,:,1);
G_data =    RGB_data(:,:,2);
B_data =    RGB_data(:,:,3); [ROW,COL, DIM] = size(RGB_data); Y_data = zeros(ROW,COL);
Cb_data = zeros(ROW,COL);
Cr_data = zeros(ROW,COL);
Gray_data = RGB_data; for r = 1:ROW for c = 1:COL Y_data(r, c)  =   0.299*R_data(r, c) + 0.587*G_data(r, c) + 0.114*B_data(r, c); Cb_data(r, c) =  -0.172*R_data(r, c) - 0.339*G_data(r, c) + 0.511*B_data(r, c) + 128; Cr_data(r, c) =   0.511*R_data(r, c) - 0.428*G_data(r, c) - 0.083*B_data(r, c) + 128; end
end Gray_data(:,:,1)=Y_data;
Gray_data(:,:,2)=Y_data;
Gray_data(:,:,3)=Y_data; %灰度
subplot(1,3,2)
imshow(Gray_data);
title('Ycbcr灰度图像');Gray_data2 = rgb2gray(RGB_data)
subplot(1,3,3)
imshow(Gray_data2);
title('gray灰度图像');
前几天学了一点二维绘图和三维绘图,又投了好多简历,参加面试。 一直希望的小米的摄像测试是没戏了emo,还是没缘分吧。

5 图像的获取和显示

5.1图像的相关知识

5.1.1 图像获取

二值化图、灰度图

close all
clc
f=imread('lena.jpg')
h=im2bw(f,0.2)%这个0.2是阈值,越大图像黑的越多
g=rgb2gray(f)
subplot(2,2,1)
imshow(g)
title('gray图');
subplot(2,2,2)
imshow(h)
title('bw图');
subplot(2,2,3)
imshow(f)
title('RGB图');


索引图片还没练习到
4.索引图像
索引图像有两个分量,数据矩阵和彩色映射矩阵。也就是说它除了具有一个存放图像的二维矩阵外,多了一个彩色映射矩阵,直接将像素的亮度值映射到彩色值。

subplot次要情节(摘自https://blog.csdn.net/liyuqian199695/article/details/50143945)

使用方法:subplot(m,n,p)或者subplot(m n p)。

subplot是将多个图画到一个平面上的工具。其中,m表示是图排成m行,n表示图排成n列,也就是整个figure中有n个图是排成一行的,一共m行,如果m=2就是表示2行图。p表示图所在的位置,p=1表示从左到右从上到下的第一个位置。

二值化图和imshow(f,[low high])

imshow(f,[low high])会将所有小于或等于low的值都显示为黑色,所有大于或等于high的值都显示为白色。介于low和high之间的值将以默认的级数显示为中等亮度值。

f = imread('figure1.jpg');
g = rgb2gray(f);%将RGB图像转换为灰度图
subplot(1,2,1);
imshow(g)
subplot(1,2,2);
imshow(g,[100 200])

试了下效果

mat2gray (参考https://blog.csdn.net/dp327264/article/details/105126683)

mat2gray
函数mat2gray可以把任意任意类型图像矩阵转换为取值范围为[0,1]的归一化double类数组。

调用格式
B = mat2gray(A)
将图像矩阵A归一化为图像矩阵B,A的值无限制,调用函数后,B的值限制在[0,1]。

B = mat2gray(A,[amin amax])
将矩阵A中介于amin和amax之间的值进行归一化处理,A中值小于amin的变为0,大于amax的变为1。

使用举例

A = [1,2,3;4,5,6];
B = mat2gray(A)
B =
0 0.2 0.4
0.6 0.8 1.0
C = [-0.5,0.5;0.75,1.5];
D = mat2gray©
D =
0 0.5
0.625 1.0

imadjust函数

f = imread('figure1.jpg');
g = rgb2gray(f);%将RGB图转换为灰度图
A = imadjust(g);
B = imadjust(g,[0 1],[1 0],1);
subplot(1,3,1)
imshow(g)
subplot(1,3,2)
imshow(A)
subplot(1,3,3)
imshow(B)

imadjust
函数imadjust可以对灰度图像进行亮度变化。

调用格式
J = imadjust(I,[low_in high_in],[low_out high_out],gamma)

此函数将图像I中low_in至high_in之间的值映射到low_out至high_out之间,而low_in以下和high_in以上的值被剪切掉。

输入图像I应该为uint8、uint16或double类的灰度图像,输出图像J与输入图像I类型相同。

[low_in high_in]和[low_out high_out]的取值均为[0,1],在实际处理中,matlab会根据图像类型将取值乘以对应的数来进行处理,如uint8类图像乘以255,uint16位图像乘以65535。

参数gamma指定了映射曲线的形状,gamma取不同大小的值得到的图像J的亮度不同。

gamma 输出效果

=1 线性
<1 更亮
>1 : 更暗

imhist函数(摘自https://blog.csdn.net/dp327264/article/details/105155990?spm=1001.2014.3001.5501点击跳转)

imhist
函数imhist可以绘制得到图像的直方图,它是Matlab图像直方图处理工具箱中的一个核心函数。

调用格式
imhist(I,n)
I为输入图像,需为灰度图像,n为指定的灰度级数目,缺省值为256。

使用示例

f = imread('figure1.jpg');
h = rgb2gray(f);%将RGB图像转换为灰度图像
imhist(h)


除了能用函数imhist绘制直方图以外,还能使用函数bar、stem、plot绘制图像的直方图,在Matlab中输入以下代码:

f = imread('figure2.jpg');
h = rgb2gray(f);%将RGB图像转换为灰度图像
h1 = h(1:10:256);
horz = 1:10:256;
subplot(2,2,1)
imhist(h)
subplot(2,2,2)
bar(horz,h1,0.5)
subplot(2,2,3)
stem(horz,h1,'fill')
subplot(2,2,4)
plot(imhist(f))

Matlab中函数histeq的使用方法及直方图均衡化(摘自点击跳转)

直方图均衡化
均衡化处理的目的是得到比原图具有更高对比度的扩展了动态范围的图像。

原理
假设灰度级为归一化至范围[0,1]内的连续量,并令p r ( r ) p_r®p
r

®表示给定图像中灰度级的概率密度函数。对输入灰度级执行如下操作,得到输出灰度级S:
S = T ( r ) = ∫ 0 r p r ( w ) d w S = T® = \int_0^rp_r(w)dw
S=T®=∫
0
r

p
r

(w)dw

得到的输出灰度级的概率密度函数是均匀的。

也就是通过对给定图像的灰度级概率密度函数进行一个积分处理,得到新的输出灰度级。通过这种变换得到的新图像灰度级在范围[0,1]比较均衡化。

histeq
函数histeq可以实现直方图的均衡化。

调用格式
J = histeq(I,hgram)
对灰度图像I进行变换,使得输出灰度图像J的直方图与目标直方图hgram近似匹配。

J = histeq(I,n)
变换灰度图像I,在J中返回具有n个离散灰度级的灰度图像。大致相等的像素数被映射到J中的n个级别中的每一个,使得J的直方图近似平坦。当n远小于I中的离散层数时,J的直方图更平坦。

I = imread('figure1.jpg');
J = histeq(I);
imshowpair(I,J,'montage')

经过均衡化后的图片,对比度明显增强

【MATLAB图像处理学习】相关推荐

  1. matlab bwmorph spur,matlab图像处理学习笔记-数学形态与二值图像操作

    matlab图像处理学习笔记-数学形态与二值图像操作 数学形态学主要处理的是二值图像,因为二值图像的处理操作比较简单. 9.1 数学形态学图像处理 基本思想:利用一个称作结构元素(structurin ...

  2. MATLAB图像处理学习——图像增强技术(附图像增强方法代码)

    目录 1.概论 (1)图像增强技术简介 (2)图像质量评估 2.空间域内的图像增强 (1)显示灰度直方图 (2)图像灰度值调整 (3)图像亮度调节 (4)灰度图像的反转变换 3.直方图增强 (1)RG ...

  3. 如何用matlab分割颜色,Matlab图像处理学习笔记(二):基于颜色的图像分割

    在实际处理图像时,经常需要对图像进行分割,然后提取ROI,本学习笔记记录怎么用Matlab实现基于颜色的图像分割. 基于颜色的图像分割实现简单,算法简洁,具有很好的实时性. 实现代码的过程中,我参考了 ...

  4. matlab图像处理学习笔记(1):matlab中double、im2double、mat2gray区别

    声明:本文转载自http://blog.sina.com.cn/s/blog_6c41e2f30101559d.html,仅为交流学习. ****************假设某图像数据A(uint8格 ...

  5. imread函数 matlab_【MATLAB图像处理学习】1.读取和显示图片

    CHAPTER2 图像处理的基础函数 [使用的教材:冈萨雷斯 数字图像处理MATLAB(Digital image processing with Matlab] [原书图片下载地址:点这里] 先介绍 ...

  6. matlab图像处理学习笔记

    因为大四的项目设计是关于图像切割,具体题目是 airway segementation,也就是肺气道树的切割算法.实现语言是matlab,虽然已经转了计算机,matlab以后会很少接触,但是为了完成项 ...

  7. MATLAB图像处理学习——图像的像素运算

    目录 1.概述 2.实例 (1)图像点运算 1.线性灰度变换 2.分段线性灰度变换 3.非线性灰度变换 (2)图像代数运算 1.图像加法运算 2.图像的减法运算 3.图像的乘法运算 4.图像的除法运算 ...

  8. matlab人民币识别,Matlab图像处理学习笔记(六):基于sift特征点的人民币识别...

    本文记录如何利用sift特征点进行人民币的识别.本文给出的matlab源码识别了1元与100元人民币的面额,相同思路,可以对各种币值的人民币进行面额.正反面的识别.但由于本程序采用串行,模板数的增多会 ...

  9. matlab图像处理学习——matlab图形可视化

    1.matlab绘图步骤 (1)数据准备(确定变量数据) (2)设置图形窗口的位置(创建绘图窗口) (3)绘制图形(生成图形文件Figural) (4)图形的修饰(图名.坐标名.图例等) (5)保存和 ...

最新文章

  1. 导频 matlab,v06_03_dem_2up_arrange.m 源代码在线查看 - 完美的OFDM仿真程序MATLAB(带导频),可直接运行 资源下载 虫虫电子下载站...
  2. datatables 一行数据生成两行_一行代码搞定分组回归
  3. java 图像倾斜角度计算_【干货】无人机航测倾斜实景三维建模进行土方计算(基于Smart3D全面讲解)...
  4. InfoComm China 2016“全球新产品发布活动” —— 汇聚众多革新设备及技术
  5. 关于 SAP Spartacus CSR fallback 之后,是否仍然会继续进行 SSR 的处理
  6. HotSpot增量Java垃圾收集器
  7. android实现文本输入,Android实现智能提示的文本输入框AutoCompleteTextView
  8. 远程控制 开源 鳄梨_开发人员关系与鳄梨的共同点
  9. matlab 垂直边缘检测,matlab 边缘检测
  10. oracle数据库连接不稳定,Oracle数据库自连接查询的缺点及解决方法
  11. oracle数据库使用小结
  12. K-Java WAP浏览器
  13. 《Using OpenRefine》翻译~15
  14. Redis-Lua脚本(集成SpringBoot工程)
  15. msvcp100.dll 丢失的解决方法-msvcp100.dll 丢失怎么修复
  16. Aspose.word基础
  17. systemverilog : constraint slove... before 详解
  18. java计算长方体面积和周长
  19. 《 2021大学生就业分析报告 》
  20. Word-embedding的资料整理

热门文章

  1. Linux 安装k8s 教程
  2. C# 利用委托事件进行窗体间的传值
  3. PonySwap全球直播预告: SHO+CNTM再定义未来金融格局
  4. 消融实验(Ablation experiment)是什么?
  5. SRM供应商管理系统具有的五大意义
  6. qq邮箱收不到zoom_如何将共同主持人添加到Zoom Meeting
  7. 工程技术提高营销效率(一)
  8. 数据提取-lxml模块系列二
  9. python调用java接口
  10. 水龙头卫浴欧盟CE认证