-
原 图像处理2019-09-06 00:46:34 zhuhaodonglei 阅读数 15
-
图像处理
图像分类
单通道图像
二值图像
灰度图像
多通道图像
索引图像
彩色图像
常用方法
图像变换
傅立叶变换
沃尔什变换
离散余弦变换
小波变换
图像编码压缩
对图像施加某种变换或基于区域、特征进行编码的方法
最常用的无损压缩算法取空间或时间上相邻像素值的差,再进行编码。如游程码。
有损压缩算法大都采用图像交换的途径,例如对图像进行快速傅里叶变换或离散的余弦变换。
图像增强
空间域
一些平滑去噪的方法:局部求平均值法和中值滤波
灰度等级直方图处理
频域
低通滤波器可以滤除噪声
高通滤波器可以增强边缘信息
图像复原
图像复原要求对图像降质的原因有一定的了解,一般讲应根据降质过程建立“降质模型”,再采用某种滤波方法,恢复或重建原来的图像。
图像分割
传统方法用到连通域,连通域的问题在于阈值的选择
图像描述
主要使用深度学习来解决
图像分类
参考
https://blog.csdn.net/jiaoyangwm/article/details/79120601
步骤
特征提取
特征编码
特征汇聚
分类器
支持向量机
K 近邻
神经网络
随机森林
检测
直线检测:霍夫变换
边缘检测
参考
https://blog.csdn.net/u013270326/article/details/81412566
算子
Sobel
Roberts
Laplacian
Canny
特征提取
参考:https://blog.csdn.net/Assure_zhang/article/details/80503196
神经网络发展
贝叶斯网络
SVN(支持向量机)
BP:反向传播进行参数调整网络
CNN:卷积神经网络
RNN:循环神经网络 -
2018-10-29 18:45:30 lgyuWT 阅读数 1105
-
选定的图像,图形或物体,对待处理的图像进行遮挡,来控制图像处理的区域或处理过程。用于覆盖特定图像或物体称为掩模或模板。光学图像处理中,掩模可以做胶片、滤光片等。数字图像处理中,掩模为二维矩阵数组,有时也用多值图像。
数字图像处理中,图像掩模主要用于:
- 提取感兴趣区,用预先制作的感兴趣区掩模与待处理图想相乘,得到感兴趣图像,感兴趣内图像值保持不变,而区外图像值都为0.
- 屏蔽作用,用掩模对图像上某些区域作屏蔽,使其不参加处理或不参加处理参数计算,或进队屏蔽区做处理统计。
- 结构特征提取,用相似性变量或图像匹配方法检测和图像中与淹没相似的结构特征。
- 特殊形状图像的制作。用选定的图像、图形或物体,对待处理的图像进行遮挡,来控制图像处理的区域或处理过程。用于覆盖特定的特定图像或物体称为掩模或模板。
掩模是一种图像滤波的模板,实用掩模经常处理的是遥控图像。当提取道路或者河流,或者房屋时,通过一个n*n的矩阵来对图像进行像素过滤,然后将我们需要的地物或者标志突出显示出来。这个矩阵就是一种掩模。
-
2014-03-31 11:34:33 Linoi 阅读数 5108
-
专栏地址:http://blog.csdn.net/column/details/imagep.html
本篇博客主要记录Image图像处理软件的基本图像处理,包括黑白图像、图像柔化、图像锐化。
图像黑白化
现在我们得到的大多数图像都是彩色图像,那么如果想要把它变成黑白图像,该怎么操作呢?
一个简单的方法就是——利用cvtColor实现。
cvtColor的原型如下:
C++: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
在cvtColor中利用CV_BGR2GRAY, CV_RGB2GRAY就可以实现从RGB图像转换为黑白图像。
转换公式如下:
Code:
void MainWindow::on_actionBlackWhite_triggered() { cv::Mat bw; cv::cvtColor(image,bw,CV_BGR2GRAY); QImage bimg = QImage((const uchar*)(bw.data),bw.cols,bw.rows,QImage::Format_Indexed8); ui->Imagedisplaylabel->setPixmap(QPixmap::fromImage(bimg)); //ui->Imagedisplaylabel->setScaledContents(true); //ui->Imagedisplaylabel->resize(ui->Imagedisplaylabel->width(),ui->Imagedisplaylabel->height()); }
Example:
References:
图像柔化
图像柔化其实也就是图像模糊(平滑),算是一个非常简单的操作。
Code:
void MainWindow::on_actionSmooth_triggered() { cv::Mat Smooth; cv::namedWindow("Ori"); cv::imshow("Ori",image); cv::GaussianBlur(image,Smooth,cv::Size(5,5),5); cv::namedWindow("S"); cv::imshow("S",Smooth); }
Example:
图像锐化
所谓图像锐化就是要突出图像的边缘信息,加强图像的轮廓特征,以便于人眼的识别。图像锐化是与图像平滑相反的一类处理。它主要分为:空域处理方法和频域处理方法。这里要讲的是类似Photoshop的unsharpe mask锐化,从概念上讲,unsharpe mask就是首先从原图上生成一个模糊拷贝,用原图减去这个拷贝,得到原图的边界,类似于经过一次高斯过滤查找到图像的边界。这个图像边界就是我们需要的mask。
整个锐化过程如下所示:
(上图改进方案见文献Image Enhancement via Adaptive Unsharp Masking)
一个简单的实例:
Code:
void MainWindow::on_actionSharpe_triggered() { cv::namedWindow("ori_s"); cv::imshow("ori_s",image); cv::Mat sharpe; cv::GaussianBlur(image,sharpe,cv::Size(5,5),5); cv::addWeighted(image,1.5,sharpe,-0.6,0,sharpe); cv::namedWindow("sharpe"); cv::imshow("sharpe",sharpe); }
Example:
References:
更多图像处理资源,请关注博客:LinJM-机器视觉微博:林建民-机器视觉
-
原 医学图像处理2017-09-24 16:11:39 u013488089 阅读数 946
-
2017-10-03 00:33:06 hhy_csdn 阅读数 8212
-
图像处理的MATLAB基础
一、MATLAB在图像处理领域的优点
优秀的矩阵运算能力
在图像处理教程(一) 中我们提到每一张图片都可以看做是一个由像素点组成的矩阵,黑白图片用一个二维矩阵就可以表示,彩色图片则要用三个二维矩阵,分别表示RGB三个颜色通道。
而MATLAB是十分擅长处理矩阵运算的科学计算软件,所以MATLAB处理图像信息就格外方便。
例如:一维向量可以表示为声音信号在时域上的离散采样信息,即可以表示一个声音信号;二维矩阵自然可以表示图像信息。
MATLAB内置了许多函数可以对矩阵做各样的处理,如sum()函数,mean()函数,imread(),imwrite()函数等等。
友好的编程语言与操作界面
不像其他高级语言(如C语言),在使用变量前必须预先定义变量,声明其数据类型,MATLAB可以直接对任意变量展开操作而不需要预先声明,MATLAB会自动为变量分配内存,确定其数据类型等。这无疑为我们编写程序带来了极大方便。
MATLAB的界面也十分友好,它既支持我们用MATLAB语言编写脚本、函数文件完成特定工作,也支持交互式的操作形式,比如种类丰富的工具箱Toolbox,许多工作动动鼠标即可完成。
二、MATLAB图像处理相关函数
本节内容的主要内容是向大家介绍一些常用的、必备的MATLAB图形处理函数。熟练掌握这些函数的用法对于以后的工作有着莫大的好处。下面我们从读取图片开始。
读取图片
myimage = imread('newborn.tif');
myimage是一个矩阵,存储着newborn.tif图片的像素信息;在imread( )函数中,以字符串的形式给出图片的名称。如果MATLAB的工作路径和图片存放的路径不一致,则要写成如下的形式,不然MATLAB会给出找不到图片的错误。
imread ('D:/dataset/image/newborn.tif'); % 注意语句后面的分号不要省略,否则我们的command window会被庞大无比的像素矩阵充满
显示图片
在读入整张图片之后,我们可以用imshow()命令将图片显示出来。
figure(1); I = imshow(myimage); title('newborn.tif');
为了查看图片上某点的坐标和RBG值(或者灰度值),我们可以使用下面的函数:
impixelinfo; %注意,pixval on早在MATLAB 2008a就已经淘汰了
输入上面命令后,图片的左下角会出现一行信息,随着鼠标的滑动,显示不同点的左边和RGB信息(或灰度值信息)。
使用如下命令可以调整figure窗口的背景颜色:
% 调整背景为绿色 whitebg ('g'); whitebg ('green'); whitebg ([0 1 0]);% 绿色的RGB值 % 其他颜色还有 Cyan blue white magenta yellow red black 等等
获取图片信息
size(myimage)% 可以显示矩阵的大小尺寸,几行几列几页 myimage(100,200,2)% 显示第2页第100行第200列的值 impixel(myimage,100,200)% 显示myimage图片在100行200列处的色彩值 imfinfo('name_of_img.jpg');% 可以显示图片的详细信息
写入图片
有时我们需要将处理结果以图片的形式写入某个位置,这就会用到下面的函数。
% 函数参数格式 imwrite(X,map,'filename','fmt'); % 例子,可以用来转换图片格式,tif->png a = imread('autumn.tif'); imwrite(a,'autumn.png','png');
命令中的X是要存储图片的像素矩阵,map是该图片的colormap(可选项),两个字符串表示待写图片的名字和格式。
生成伪彩色图片
% 输入一张灰度图名称,不必键入单引号 im=input('Enter the file name (gray level image) :','s'); k=imread(im); % k是读入的照片,灰度图的z=1 [x y z]=size(k); % 将uint8格式转换为double格式 k=double(k); % 对灰度图做变换,生成三个色彩通道 for i=1:x for j=1:y if k(i,j)>=0 & k(i,j)<50 m(i,j,1)=k(i,j,1)+5; m(i,j,2)=k(i,j)+10; m(i,j,3)=k(i,j)+10; end if k(i,j)>=50 & k(i,j)<100 m(i,j,1)=k(i,j)+35; m(i,j,2)=k(i,j)+28; m(i,j,3)=k(i,j)+10; end if k(i,j)>=100 & k(i,j)<150 m(i,j,1)=k(i,j)+52; m(i,j,2)=k(i,j)+30; m(i,j,3)=k(i,j)+15; end if k(i,j)>=150 & k(i,j)<200 m(i,j,1)=k(i,j)+50; m(i,j,2)=k(i,j)+40; m(i,j,3)=k(i,j)+25; end if k(i,j)>=200 & k(i,j)<=256 m(i,j,1)=k(i,j)+120; m(i,j,2)=k(i,j)+60; m(i,j,3)=k(i,j)+45; end end end % 显示原图像 figure,imshow(uint8(k),[]); % 显示生成的伪彩色图片 figure,imshow(uint8(m),[]);
256色、高彩色、真彩色
每个像素的色彩表示可以用多位二进制数表示。
用1bit只能表示黑或白,即二值图像。
用8bit即可表示256种颜色,所以MATLAB读入的图片矩阵常有uint8的数据格式,8个bit中2个bit表示蓝色、分别用3个bit表示红色和绿色。
高彩色(High Color)可以表示65536种颜色,更加接近真实。
而真彩色(True Color)有24bit来表示每个像素的色彩值,最多有16,777,216种颜色,当然储存空间响应也要增大。
MATLAB中常用的数据类型
注意:数据类型不同的变量之间不能做运算,需要用转换函数先进行一步转换。% 示例代码 % 原始图片 [em,emap] = imread(‘trees.tif'); figure, imshow(em,emap); % 索引图转换成灰度图 ygray = ind2gray(em, emap); figure, imshow (ygray); % 灰度图转换成索引图 [y, map] = gray2ind(ygray); figure, imshow (y); % 读入原始图片 im = imread('twins.tif'); figure,imshow(im); % rgb图像转灰度图 yim = rgb2gray(im); figure,imshow(yim); % 灰度图转RGB图 yim2 = gray2rgb(yim); figure,imshow(yim2); % 读入原始图像 RGB = imread('peppers.png'); % rgb图像转换为128色的索引图 [X,map] = rgb2ind(RGB,128); figure, imshow(X,map); % rgb图像转换为256色的索引图 [X,map] = rgb2ind(RGB,256); figure, imshow(X,map); % rgb图像转换为2色的索引图 [X,map] = rgb2ind(RGB,2); figure, imshow(X,map); % 索引图转换为rgb图 [em,emap] = imread('emu.tif') figure, imshow(em,emap) y = ind2rgb(em,emap) figure, imshow(y)
以上我们展示了二值图、灰度图、色彩图、索引图之间的相互转换过程,具体的函数应用可以在command window下键入
help rgb2gray
等命令来获取详细信息。三、小练习
1)试着在MATLAB的命令窗口键入
help imdemos
,之后命令窗口会给出Image Processing Toolbox中所有的示例(sample)。列一个表格,看看有多少个样本图片。
对每一张图片,试着确定它的类型(二值图、灰度图、真彩色、索引色)
确定图片的尺寸,在像素层面。下面是答案:
Sample TIFF images: autumn.tif, board.tif, cameraman.tif, canoe.tif, cell.tif, circbw.tif, circuit.tif, eight.tif, forest.tif, kids.tif, logo.tif, m83.tif, moon.tif, mri.tif, paper1.tif, pout.tif, shadow.tif, spine.tif, tire.tif, trees.tif.
Binary: circbw.tif (3822), logo.tif (1074). Grayscale: cameraman.tif (65536), cell.tif (30369), circuit.tif (76160), eight.tif (74536), moon.tif (192246), paper1.tif (51296), pout.tif (69840), tire.tif (47560). True color: autumn.tif (213210), board.tif (594864), forest.tif (134547). Indexed color: canoe.tif (71622), forest.tif (134547), kids.tif (127200), m83.tif (151200), mri.tif (16384), shadow.tif (66454), spine.tif (179830), trees.tif (90300).
2)找一张灰度图,然后利用
imwrite()
函数将其写为JPEG、PNG、BMP格式的图片,并且比较他们各自的大小。

matlab图像处理处理 相关内容

matlab图像处理处理 相关内容

matlab图像处理处理 相关内容

matlab图像处理处理 相关内容

matlab图像处理处理 相关内容
-
阅读数 799
-
阅读数 2633
-
阅读数 25051
-
阅读数 1673
-
阅读数 7731