Matlab 常用的图像处理方法
文章目录
- Matlab 常用的图像处理方法
- RGB转灰度
- 噪声添加
- 滤波
- 中值滤波
- 均值滤波
- sobel算子处理
- 图像形态学运算
- Reference
Matlab 常用的图像处理方法
RGB转灰度
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
Matlab代码:
%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灰度图像');
原始图像和ycbcr,Gray灰度图像对比
噪声添加
所用函数为imnoise (img, type),该函数中的type可以为5种噪声参数,分别为:
- ‘gaussian’(高斯白噪声),
- ‘localvar’(与图象灰度值有关的零均值高斯白噪声),
- ‘poisson’(泊松噪声),
- ‘salt & pepper’(椒盐噪声)
- ‘speckle’(斑点噪声)。
imgn = imnoise(Gray_data,'salt & pepper',0.02); %加入椒盐噪声后的图像figure; imshow(imgn); %加入椒盐噪声的图像
imgn2 = imnoise(Gray_data, 'gaussian');
%加入高斯白噪声后的图像
figure;
imshow(imgn2);
滤波
中值滤波
%这里处理的是椒盐噪声的图像Median_Img = Gray_data;%转存一次for r = 2:ROW-1 for c = 2:COL-1 median3x3 =[imgn(r-1,c-1) imgn(r-1,c) imgn(r-1,c+1) imgn(r,c-1) imgn(r,c) imgn(r,c+1) imgn(r+1,c-1) imgn(r+1,c) imgn(r+1,c+1)]; sort1 = sort(median3x3, 2, 'descend');sort2 = sort([sort1(1), sort1(4), sort1(7)], 'descend'); sort3 = sort([sort1(2), sort1(5), sort1(8)], 'descend'); sort4 = sort([sort1(3), sort1(6), sort1(9)], 'descend'); mid_num = sort([sort2(3), sort3(2), sort4(1)], 'descend'); Median_Img(r,c) = mid_num(2); end end %中值滤波figure; imshow(Median_Img);
均值滤波
%--------------------------------------------------------
%均值滤波
r=0, c = 0;
for r = 2:1:ROW-1for c = 2:1:COL-1Mean_Img(r,c) = (imgn(r-1, c-1) + imgn(r-1, c) + imgn(r-1, c+1) + imgn(r, c-1) + imgn(r, c) + imgn(r, c+1) + imgn(r+1, c-1) + imgn(r+1, c) + imgn(r+1, c+1)) / 9;end
endfigure;
imshow(Mean_Img);
title('均值滤波图像');
很明显,均值滤波不适合用于处理椒盐噪声
sobel算子处理
Median_Img = double(Median_Img); #对中值滤波的数值进行转double精度处理Sobel_Threshold = 150; Sobel_Img = zeros(ROW,COL); for r = 2:ROW-1 for c = 2:COL-1 Sobel_x = Median_Img(r-1,c+1) + 2*Median_Img(r,c+1) + Median_Img(r+1,c+1) - Median_Img(r-1,c-1) - 2*Median_Img(r,c-1) - Median_Img(r+1,c-1); Sobel_y = Median_Img(r-1,c-1) + 2*Median_Img(r-1,c) + Median_Img(r-1,c+1) - Median_Img(r+1,c-1) - 2*Median_Img(r+1,c) - Median_Img(r+1,c+1); Sobel_Num = abs(Sobel_x) + abs(Sobel_y); %Sobel_Num = sqrt(Sobel_x^2 + Sobel_y^2); if(Sobel_Num > Sobel_Threshold) Sobel_Img(r,c)=255; else Sobel_Img(r,c)=0; end end end %sobel后的图像figure; imshow(Sobel_Img); title('中值滤波后进行sobel处理');
图像形态学运算
先腐蚀后膨胀叫开运算,开运算的作用是清除图像边缘周围非边缘的细小的点。先膨胀后腐蚀为闭运算,闭运算的作用是清除图像内部的空洞。
介绍
大磊FPGA腐蚀膨胀介绍
Dilation_img = zeros(ROW,COL);for r = 2:ROW-1for c = 2:COL-1%每行先做或运算,最后三个或运算在相或,这是膨胀or1 = bitor(Sobel_Img(r-1, c-1), bitor(Sobel_Img(r-1, c), Sobel_Img(r-1, c+1)));or2 = bitor(Sobel_Img(r, c-1), bitor(Sobel_Img(r, c), Sobel_Img(r, c+1)));or3 = bitor(Sobel_Img(r+1, c-1), bitor(Sobel_Img(r+1, c), Sobel_Img(r+1, c+1)));Dilation_img(r, c) = bitor(or1, bitor(or2, or3));endend%显示膨胀的后图像figure;imshow(Dilation_img);%ErosionErosion_img = zeros(ROW,COL);for r = 2:ROW-1for c = 2:COL-1and1 = bitand(Dilation_img(r-1, c-1), bitand(Dilation_img(r-1, c), Dilation_img(r-1, c+1)));and2 = bitand(Dilation_img(r, c-1), bitand(Dilation_img(r, c), Dilation_img(r, c+1)));and3 = bitand(Dilation_img(r+1, c-1), bitand(Dilation_img(r+1, c), Dilation_img(r+1, c+1)));Erosion_img(r, c) = bitand(and1, bitand(and2, and3));endend%腐蚀操作figure;imshow(Erosion_img);
Reference
Matlab 数字图像处理教程 BY NINGHECHUANG
Matlab 常用的图像处理方法相关推荐
- 基于matlab生物医学影像处理,基于MATLAB的医学图像处理
基于MATLAB的医学图像处理 届 别 2012 届 学 号 200814350135 毕业设计(论文)基于 MATLAB 的医学图像处理姓 名 唐 涛 系 别 . 专 业 计 算 机 科 学 系 . ...
- 基于MATLAB的数字图像处理的设计与实现 转
基于MAT [摘要]数字图像处理是一门新兴技术,随着计算机硬件的发展,数字图像的实时处理已经成为可能,由于数字图像处理的各种算法的出现,使得其处理速度越来越快,能更好的为人们服务.数字图像处理是一种通 ...
- 基于matlab的gui图像处理,基于matlab GUI的数字图像处理系统毕业论文+开题报告+程序+设计文献...
摘 要 数字图像处理(Digital Image Processing)又称为计算机图像处理,它是指将图像信号转换成数字信号并利用计算机对其进行处理的过程.在数字图像处理过程中,输入的是质量低的图像 ...
- matlab的边缘检测方法,常用图像边缘检测方法及Matlab研究
2011 年 2 月 15 日第 34 卷第 4 期 现代电子技术 Modern Electronics Technique Feb. 2011 Vol. 34 No. 4 常用图像边缘检测方法及 M ...
- 基于matlab 的燃油喷雾图像处理方法,基于MATLAB的燃油喷雾图像处理方法.doc
基于MATLAB的燃油喷雾图像处理方法 基于MATLAB的燃油喷雾图像处理方法 摘要:提出了基于MATLAB的燃油喷雾图像处理方法.通过对喷雾图像的采集, 分割和滤波处理, 将多幅图像转换融合为一幅 ...
- 数字图像处理——12种常用图像处理方法对比
数字图像处理--12种常用图像处理方法对比 1.图像反转 2.对数变换 3.幂次变换 4.分段函数 5.直方图均衡化 6.直方图规定化 7.直方图匹配 8.线性滤波 9.中值滤波与均值滤波 10.拉普 ...
- 用matlab写的视频截取图像桢,基于MATLAB的储粮害虫图像处理方法
摘要:在对粮虫图像处理过程中,介绍了Matlab图像处理工具箱中的函数,给出了图像处理 与分析的技术实现, 边缘检测及轮廓提取, 通过形态学方法进行图像特征抽取与分析,达到了比较好的效果. 关键词:粮 ...
- 【Matlab 常用图像处理函数 汇总】
Matlab 常用图像处理函数 汇总 一.图像的读取 二.图像的写入 三.图像的显示 四.创建窗口 五.图像的格式转换 六.灰度直方图 七.伽马变换 八.图像二值化 九.阈值变换 十.直方图均衡化 十 ...
- matlab差分算子的灰度图像边缘检测,常用图像边缘检测方法及MATLAB研究
论文 2 1年 2月 I 01 5日 现代电子技术 M o e n El c r i sT e h qu d r e ton c c ni e 第3 4卷第 4期 Fe .2 11 b 0 Vo1 3 ...
最新文章
- icop java,java基于spring注解AOP的异常处理的方法
- html里range怎么改样式,CSS之修改input range样式 [ lion1ou ]
- Sqlserver循环嵌套
- pyspider architecture--官方文档
- 三宝机器人怎么充电_巨人通力导致吉祥三宝+36号故障怪现象的又一因素
- matlab的knn均值滤波,中值滤波与均值滤波介绍.ppt
- 利用VMware Infrastructure SDK编程控制虚拟机集群(2)
- 深度学习(00)——GPU版本的TensorFlow
- IE打开xml文件弹出下载对话框
- (2)I/O流对象-----FilterInputStream与FilterOutputStream
- c语言实验集成环境软件,TurboC for Windows集成实验与学习环境
- Python Wind量化API
- 多功能智慧路灯杆商业模式解决方案
- android视图动画(ViewAnimation动画)
- 准考证丢失后如何查询四六级成绩
- 夜宿祝国寺(文:元哲)
- powerAutomate
- 【PHP】PHP MySQL问题 phpinfo() 没有显示MySQL模块
- GitHub SSH设置与Permission denied问题解决方法
- 02.javaWeb旅游网小项目【注册功能】