MATLAB对RGB彩色图像进行加马赛克处理
简单实现MATLAB对RGB彩色图像进行加马赛克处理
为了加深对图像中像素块操作的记忆,利用像素块内均值方式对RGB彩色图像进行马赛克效果的处理;为了能后比较简单得实现,所以采用了n*n像素块大小的均值的方式。
为了比较简单实现,这里对RGB彩色图像三个通道分别采用了相同的均值操作,最后再利用MATLAB中的cat()函数将其合成三通道彩色图像。
代码如下:
%图片加马赛克练习
%均值处理方式加马赛克
%参数说明:f表示原图;fr,fg,fb表示原图的RGB三个通道
%imgn表示新图像
%imgnr,imgng,imgnb表示新图像的三个通道,分别用于存储新的图像
%n*n表示设置的马赛克区域像素块的大小clear all;
close all;
clc;
%原图的路径
f = imread('F:\MATLAB2017b\MOutputResults\saber7.jpg');%将源图像三个通道值取出
fr = f(:,:,1);
fg = f(:,:,2);
fb = f(:,:,3);
%由于原图像是三维h*w*3,求出单通道图像的大小
[h w] = size(fr);%设置三个零矩阵用于存储新图像
imgnr = zeros(h,w);
imgng = zeros(h,w);
imgnb = zeros(h,w);%设置马赛克区域n*n像素块大小
n = 20;
nh = floor(h/n)*n;%将不一定是n的整数倍的图像大小化为整数倍
nw = floor(w/n)*n;%对R通道进行处理for j = 1:n:nhfor i = 1:n:nwimgnr(j:j+n-1, i:i+n-1) =mean(mean(fr(j:j+n-1, i:i+n-1)));%对列进行取均值处理endimgnr(j:j+n-1,nw:w ) = mean(mean(fr(j:j+n-1,nw:w )));%处理最后的列
end
for i = 1:n:nwimgnr(nh:h, i:i+n-1) = mean(mean(fr(nh:h, i:i+n-1)));%处理最后的行
end
imgnr(nh:h, nw:w) = mean(mean(fr(nh:h, nw:w)));%处理最后的角%处理G通道
for j = 1:n:nhfor i = 1:n:nwimgng(j:j+n-1, i:i+n-1) =mean(mean(fg(j:j+n-1, i:i+n-1))); endimgng(j:j+n-1, nw:w) = mean(mean(fg(j:j+n-1, nw:w)));
end
for i = 1:n:nwimgng(nh:h, i:i+n-1) = mean(mean(fg(nh:h, i:i+n-1)));
end
imgng(nh:h, nw:w) = mean(mean(fg(nh:h, nw:w)));%处理B通道
for j = 1:n:nhfor i = 1:n:nwimgnb(j:j+n-1, i:i+n-1) = mean(mean(fb(j:j+n-1, i:i+n-1)));endimgnb(j:j+n-1, nw:w) = mean(mean(fb(j:j+n-1, nw:w)));
end
for i = 1:n:nwimgnb(nh:h,i:i+n-1) = mean(mean(fb(nh:h, i:i+n-1)));
end
imgnb(nh:h, nw:w) = mean(mean(fb(nh:h, nw:w)));%三通道图像合成
imgnr = im2double(imgnr)/255;
imgng = im2double(imgng)/255;
imgnb = im2double(imgnb)/255;
imgn = cat(3,imgnr, imgng, imgnb);
imshowpair(f,imgn,'montage');%两张图片显示
title('原图 马赛克处理后图像');
效果如下:
由于实际上对RGB每个通道的处理操作都是一样的,因此还可以将原图三个通道的过程写成一个for循环。
代码为:
clear all;
close all;
clc;
%原图的路径
f = imread('F:\MATLAB2017b\MOutputResults\saber7.jpg');% %将源图像单个通道值取出
fr = f(:,:,1);
[h w] = size(fr);
imgn = f;%设置马赛克区域n*n像素块大小
n = 20;
nh = floor(h/n)*n;%将不一定是n的整数倍的图像大小化为整数倍
nw = floor(w/n)*n;%对三个通道进行循环处理
for t = 1:3for j = 1:n:nhfor i = 1:n:nwimgn(j:j+n-1, i:i+n-1, t) =mean(mean(f(j:j+n-1, i:i+n-1, t)));%对列进行取均值处理endimgn(j:j+n-1,nw:w , t ) = mean(mean(f(j:j+n-1,nw:w , t)));%处理最后的列endfor i = 1:n:nwimgn(nh:h, i:i+n-1, t) = mean(mean(f(nh:h, i:i+n-1, t)));%处理最后的行endimgn(nh:h, nw:w, t) = mean(mean(f(nh:h, nw:w , t)));%处理最后的角endimshowpair(f,imgn,'montage');%两张图片显示
title('原图 马赛克处理后图像');
最后运行结果一样。
MATLAB对RGB彩色图像进行加马赛克处理相关推荐
- RGB彩色图像分量提取(java实现)
引文 生活中最常见的RGB图像,比如手机照片,即为标准的三通道24位深RGB图像. 冈萨雷斯和伍兹所著的<数字图像处理>第二版中给出如下定义:一幅RGB图像,可以看作是一个MN3的彩色像素 ...
- 数字图像处理之在matlab中做彩色图像的加减乘除
数字图像处理之在matlab中做彩色图像的加减乘除 图像与数做运算 clc; clear all; A = imread('C:\Users\Administrator\Desktop\333.jpg ...
- matlab 求n 的和,MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的...
点击查看MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的具体信息 答:myfactorial = @(n) factorial(n) myfactorial = @(n) pro ...
- matlab哈宁低通,Matlab实现电网谐波测量加窗插值算法.pdf
收稿日期 2005 03 16 作者简介 张鸿博 1980 男 河南舞钢人 硕士生 第16卷第2期中原工学院学报Vol 16 No 2 2005年04月JOURNAL OF ZHONG YUAN IN ...
- RGB彩色图像、灰度图像
1.理解RGB彩色图像 ,RGB分量的意义 1.r red,g green,b blue 2.每一种颜色在视觉效果上都可以不同比例的 红 蓝 绿 三种颜色来合成 3.彩色图像的每一个像素,都是用 红蓝 ...
- matlab 图片RGB颜色提取0-255版
APP designer版本链接:MATLAB App Designer 特别篇:RGB颜色提取器 新版本链接:matlab图片RGB颜色提取第二版 function getcolor255 glob ...
- matlab 图片RGB颜色提取
APP designer版本链接:MATLAB App Designer 特别篇:RGB颜色提取器 新版本链接:matlab图片RGB颜色提取第二版 写了一个程序能实现导入图片识别颜色 支持屏幕截图和 ...
- C++数字图像处理篇之图像加马赛克
马赛克是一种广为使用的图像处理手段,它是将影像特定区域的色阶细节劣化并造成色块打乱的效果.这种模糊看样子像一个个小格子,所以被称为马赛克.马赛克主要的目的就是使图像内容无法辨认,以保护特殊图像内容.这 ...
- 【图像转换】基于matlab灰度图像转换彩色图像【含Matlab 1233期】
一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像转换]基于matlab灰度图像转换彩色图像[含Matlab 1233期] (https://download.csdn.net/dow ...
最新文章
- 武汉约100所中小学将试点人工智能课,现面向社会遴选教材
- bs4爬取的时候有两个标签相同_4.4 爬虫中的bs4数据爬取步骤
- DL之DNN:基于Tensorflow框架对神经网络算法进行参数初始化的常用九大函数及其使用案例
- 使用权重如何让一个控件的宽度为父控件的 1/3?
- java integer null 0_Mybatis Integer类型参数值为0时得到为空的解决方法
- WIN10 开启右键 命令提示符
- linux sd卡 读写速度测试_铠侠(原东芝存储)SD卡,大容量存储时代,高速读写选择...
- java spring getbean_spring依赖注入中获取JavaBean
- 包裹遭联邦快递不正常“转运” 华为:将重新审视双方合作关系
- 别踩白块儿游戏源代码分析和下载(二)
- java excel 批注_Java 添加、读取和删除 Excel 批注
- “Failed to load response data“ django@xframe_options_exempt 网站不许 Firefox 显示被嵌入的网页
- C#中的转义字符和Verbatim字符串
- Java的泛型---(英雄联盟集合嵌套案例)
- javascript 模拟退格键_javascript禁止Backspace退格键的多种方法
- 华为物联网(IOT)开发者平台
- mPaas苹果客户端离线包引入http的js白屏问题解决办法
- 沪江计算机考研老师,[回报沪江]从六级370到考研74,我的08研英之路[原创].doc
- 致远SPM解决方案之费用管理
- 如何使用CSS和JavaScript构建简单的甘特图
热门文章
- python+autoit用法
- 14的虚拟机可以用在15上面吗_MacOS虚拟机安装Linux(Ubuntu)
- linux的普通用户不能执行关机命令,linux:root用户让普通用户可以使用关机命令...
- object转换为数组_从V8源码分析一个JS 数组的内存占用问题
- 写给WEB2.0的站长 不仅仅是泼冷水(转)
- apache支持laravel路由_swoole运行模式加速laravel应用的详细介绍
- Oracle数据库练习题
- java设置行的长度_Java 将数组设置为指定的长度,必要时刮除或填充结尾。
- Origin 画不等距数据分布直方图
- android过滤文件删除,Android Studio Git 过滤(忽略)和移除不必要上传的文件