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

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. Struct 和 Class 性能有差异吗?自己测试
  2. 二级联动,三级联动,初学者,纯javascript,不含jQuery
  3. Fabric--启动网络手动
  4. oracle的索引使用方法,在OracleE数据库的字段上建立索引的方法
  5. 随想录(从开源的宝库中学习)
  6. webstore报 ESLint: Expected space or tab after '//' in comment.(spaced-comment)
  7. 2021年中国一氧化碳传感器市场趋势报告、技术动态创新及2027年市场预测
  8. tomcat连接oracle非常慢,关于myEclipse中tomcat 6.0启动慢的有关问题
  9. selenium_java
  10. selenium定位php,selenium之元素定位
  11. FTP-学习笔记(1)
  12. spring源码-bean加载整体流程
  13. servlet返回json到html页面,使用easyui从servlet传递json数据到前端页面的两种方法
  14. 数据仓库是如何分层的?
  15. html怎么插入word文档,word中怎样插入html代码?
  16. PS薄纱飘带字体制作
  17. 【LeetCode】马三来刷题之 Single Number
  18. 外卖扫码点餐独立全开源小程序源码+VUE前端
  19. HDU3085 Nightmare Ⅱ —— 双向BFS + 曼哈顿距离
  20. Python open函数用法

热门文章

  1. mybatis mapper 符号转译
  2. 河南省专利申请费用一览表,郑州专利申请的费用...
  3. seq2seq模型_对话生成:seq2seq模型原理及优化
  4. hive 删除某个分区中部分数据
  5. 阿里巴巴开发规范——代码格式
  6. 二、ModBus协议解析
  7. CSS|如何在页面上为文字添加艺术效果
  8. ABAP基础知识 内表汇总数据的方式
  9. 关于会计信息管理专业就业后薪酬范围分析
  10. Vue实例练习——简易音乐播放器