图像导入裁剪与灰度化
数字图像基本知识
1.什么是数字图像?数字图像处理有哪些特点?
答: 数字图像是由有限的元素组成,每一个像素的空间位置(x,y)和强度值f都被量化成离散的数值,这些元素称为像素。因此,数字图像是具有离散值的二维像素矩阵,能够存储在计算机存储器里面,方便处理。
量化:对模拟图像进行采样之后所得到的小图像块的像素值仍然是连续的,所以要对其像素值进行离散化处理,即量化。
数字图像处理特点:
1、信息量大。数字图像处理的信息大多数是二维信息,是由图像矩阵中的像素组成的,而每个像素是由红、绿、蓝三种颜色表示的,每种颜色用8位表示灰度级,一幅没有经过压缩的1024X768的真彩图像,它的数据可以达到2M。所以庞大的数据量给数字图像的存储、传输、处理都带来了困难。
2、处理精度高,再现性好。用计算机处理图像数据,其实实质就是对图像数据进行各种运算,当然这是色彩的运算。现代的扫描仪可以把每个像素的灰度等级量化为16位甚至更高,这就意味着图像的数字化精度可以达到满足任何应用需求。
3、适用面宽。图像可以来自各种信息源。他们可以是可见光图像,也可以是不可见的光谱图像。
4、效果易于控制。在数字图像处理过程中,可以任意的改变参数,有效的控制处理过程。比如可以在PS软件中进行色相/饱和度的参数调节,从而达到预计的效果。
5、处理费时间。这点很好理解,由于数据量大,处理所需要的时间也是很多的。如果处理一个像素需要1毫秒,那么处理700X500像素的数据就将需要花费大约6分钟的时间。
6、灵活性高。图像处理大体上可以分为图像的画质改善,图像分析和图像的重建。这三部分都包含丰富的内容。
7、数字图像受人的因素影响较大。因为处理图像一般是给人观察和评价的,由于每个人的视觉系统很复杂,受环境、光线、视觉性能等诸多因素的影响。
- 若RGB图像中的每一幅红、绿、蓝图像都是一幅8bit图像,则改RGB图像所有可能的颜色总数是多少?
答:RGB分三原色,8bit,那么每种原色共有256个值
所以三原色所能组成的颜色共有256256256=16777216 种。
-编程:
图像导入,裁剪显示(长宽分别为原尺寸1/2),彩色图像灰度化,保存。
分析:彩色图像是具有三通道(R,G,B)的图片,而灰度图像是只具有单通道的图像,二值图像就是黑白图片,只有黑白两个颜色,所有在了解这三者的区别之后再做就方便了。
为了得到灰度图像,可以取rgb三通道的任意一个通道的矩阵就可以,或者使用内置函数rgb2gray(实际上是用的加权取得的,可以用help rgb2gray查看文档),或者使用最大值法,平均法。下面写了对应的五种方法,请看代码。
对于裁剪,可以用内置函数,还有就是自己根据图片大小显示对应的区域。详情请看代码。
源代码+注释+说明
img = imread('E:\photo\matlabtest\testone.jpg'); %读取grb格式的图像
rect = [300 300 1000 1000]; %构建裁剪起始位置以及大小。
imgcrop = imcrop(img,rect); %调用函数
imgcaijian = img(1:1250,1:720,:);
imgbw = img(:,:,1); %直接取r,g,b其中一个二维矩阵,1,2,3,都可以。
first = rgb2gray(img); %用函数进行灰度变换,其实就是加权平均方法, 0.299 * R + 0.587 * G + 0.114 * B
[rows,cols,colors]=size(img); %得到原来图像的矩阵的参数
second = zeros(rows,cols); %创建一个同样大小的全零矩阵,用来存储下面的图像
second = uint8(second); %将全零矩阵变为uint8格式,因为上面创建之后默认为double.
%平均值法 得到较为柔和的
for i = 1 : rows %遍历行for j = 1: cols %遍历列sum = 0;for k = 1 : colors %遍历三种颜色sum = sum + img(i,j,k)/3; %进行转化,每次sum不能超过255endsecond(i,j) = sum; %赋值给像素点end
end
%最大值法 得到亮度较高的
maxx = zeros(rows,cols); %创建一个同样大小的全零矩阵,用来存储下面的图像
maxx = uint8(maxx); %将全零矩阵变为uint8格式,因为上面创建之后默认为double.
for i = 1 : rowsfor j = 1 : colsmaxx(i,j) = max(img(i,j,:)); %取最大值end
end
%加权平均值法转化的图像
jiaquan = zeros(rows,cols); %创建一个同样大小的全零矩阵,用来存储下面的图像
jiaquan = uint8(jiaquan); %将全零矩阵变为uint8格式,因为上面创建之后默认为double.
for i = 1 : rowsfor j = 1 : colsjiaquan(i,j) = img(i,j,1) * 0.3 + img(i,j,2) * 0.3 + img(i,j,3) * 0.4; %加权求值end
end
imwrite(jiaquan,"加权图像.jpeg");%保存图像为加权图像.jpeg)
figure();
subplot(2,4,1),imshow(img),title("原图");
subplot(2,4,2),imshow(imgbw),title("取任意一维");
subplot(2,4,3),imshow(imgcrop),title("裁剪的图像");
subplot(2,4,4),imshow(first),title("内置函数");
subplot(2,4,5),imshow(second),title("平均值法");
subplot(2,4,6),imshow(maxx),title("最大值法");
subplot(2,4,7),imshow(jiaquan),title("加权");
subplot(2,4,8),imshow(imgcaijian),title("裁剪");
结果:
并且在当前目录保存了加权图像。
第一次基本入门就到此为止,路漫漫其修远兮,吾将上下而求索!
图像导入裁剪与灰度化相关推荐
- 数字识别java开源_Java基于opencv实现图像数字识别(三)—灰度化和二值化
Java基于opencv实现图像数字识别(三)-灰度化和二值化 一.灰度化 灰度化:在RGB模型中,如果R=G=B时,则彩色表示灰度颜色,其中R=G=B的值叫灰度值:因此,灰度图像每个像素点只需一个字 ...
- (二)对图像进行预处理(灰度化,二值化)
对图像进行预处理(灰度化,二值化) 一.图像灰度化处理 图像灰度化是指每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度. 灰度图像与黑白图像不同,在计算机图像领域中黑白图 ...
- matlab 二值化图像反色,图像处理——灰度化、二值化、反色、饱和度、对比度...
RGB RGB色彩模式使用RGB模型为图像中每个像素的RGB分量分配一个0~255范围内的强度值.RGB图像仅仅使用三种颜色,R(red).G(green).B(blue),就能够使它们依照不同的比例 ...
- opencv图像灰化_opencv读入图像、灰度化、归一化、向量化
平台:win7+opencv2.4.4+vs2008 功能:实现对图像的读入.灰度化.归一化和向量化. 代码: //这里的头文件都是vs2008的,与vc6.0有多不同 #include #inclu ...
- [Python图像处理] 三十一.图像点运算处理两万字详细总结(灰度化处理、阈值化处理)
该系列文章是讲解Python OpenCV图像处理知识,前期主要讲解图像入门.OpenCV基础用法,中期讲解图像处理的各种算法,包括图像锐化算子.图像增强技术.图像分割等,后期结合深度学习研究图像识别 ...
- 【OpenCV 例程200篇】37. 图像的灰度化处理和二值化处理
[OpenCV 例程200篇]37. 图像的灰度化处理和二值化处理 欢迎关注 『OpenCV 例程200篇』 系列,持续更新中 欢迎关注 『Python小白的OpenCV学习课』 系列,持续更新中 按 ...
- Opencv读取文件夹连续图片,RGB分量显示,图像灰度化
1.读取文件夹连续图片 刚开始学习图像处理,开始只能一次读入一张图片,今天从网上查了一些资料,自己写了一个可以连续读取多张图片函数. char filename[100];char windownam ...
- html5图片灰度显示,HTML5 组件Canvas实现图像灰度化
HTML5发布已经有很长一段时间了,一直以来从来没有仔细的看过,过年刚来随便看看 发现HTML5中的Canvas组件功能是如此的强大,不怪很多牛人预言Flash已死,死不死 不是我要关心的,我关心的C ...
- Python-OpenCV 处理图像(七):图像灰度化处理
为了加快处理速度,在图像处理算法中,往往需要把彩色图像转换为灰度图像. 0x00. 灰度图 灰度数字图像是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度. 灰度图像与黑 ...
- Python-OpenCV 处理图像(六)(七)(八):对象识别 图像灰度化处理 图像二值化处理
为了加快处理速度,在图像处理算法中,往往需要把彩色图像转换为灰度图像. 0x00. 灰度图 灰度数字图像是每个像素只有一个采样颜色的图像,这类图像通常显示为从最暗黑色到最亮的白色的灰度. 灰度图像与黑 ...
最新文章
- windows7下解决caffe check failed registry.count(type) == 1(0 vs. 1) unknown layer type问题
- Matlab编程与数据类型 -- 循环控制语句之二:while/end
- 用结构体实现一个电话本
- kubernetes常用命令
- 当yum 遇到No more mirrors to try
- CentOS6虚拟机下面配置双网卡
- 实验7-3-3 统计大写辅音字母 (15分)
- sqlite 数据量_向SQLite批量导入csv,txt数据
- Flutter安装和踩坑指南(windows)
- 算法笔记_172:历届试题 波动数列(Java)
- HTML5 — 知识总结篇《V》【a元素】
- css中背景的应用及BFC与IFC应用
- vue实现点击复制文本功能
- TiDB 在中国电信翼支付的大规模深度实践
- 小甲鱼学python学习笔记
- 搞笑新闻联播之老公岗位制度(中)铃声 搞笑新闻联播之老公岗...
- Android中检测应用是否安装
- 21.12.8组合数
- 皇帝踏入31 克城冠军梦 时不我待
- 做设计这么久,UED/UXD、IXD、GUI到底是什么?你分清了吗