简单实现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彩色图像进行加马赛克处理相关推荐

  1. RGB彩色图像分量提取(java实现)

    引文 生活中最常见的RGB图像,比如手机照片,即为标准的三通道24位深RGB图像. 冈萨雷斯和伍兹所著的<数字图像处理>第二版中给出如下定义:一幅RGB图像,可以看作是一个MN3的彩色像素 ...

  2. 数字图像处理之在matlab中做彩色图像的加减乘除

    数字图像处理之在matlab中做彩色图像的加减乘除 图像与数做运算 clc; clear all; A = imread('C:\Users\Administrator\Desktop\333.jpg ...

  3. matlab 求n 的和,MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的...

    点击查看MATLAB求1的阶乘加到n的阶乘和 不要现有的函数,要自己编写出来的具体信息 答:myfactorial = @(n) factorial(n) myfactorial = @(n) pro ...

  4. matlab哈宁低通,Matlab实现电网谐波测量加窗插值算法.pdf

    收稿日期 2005 03 16 作者简介 张鸿博 1980 男 河南舞钢人 硕士生 第16卷第2期中原工学院学报Vol 16 No 2 2005年04月JOURNAL OF ZHONG YUAN IN ...

  5. RGB彩色图像、灰度图像

    1.理解RGB彩色图像 ,RGB分量的意义 1.r red,g green,b blue 2.每一种颜色在视觉效果上都可以不同比例的 红 蓝 绿 三种颜色来合成 3.彩色图像的每一个像素,都是用 红蓝 ...

  6. matlab 图片RGB颜色提取0-255版

    APP designer版本链接:MATLAB App Designer 特别篇:RGB颜色提取器 新版本链接:matlab图片RGB颜色提取第二版 function getcolor255 glob ...

  7. matlab 图片RGB颜色提取

    APP designer版本链接:MATLAB App Designer 特别篇:RGB颜色提取器 新版本链接:matlab图片RGB颜色提取第二版 写了一个程序能实现导入图片识别颜色 支持屏幕截图和 ...

  8. C++数字图像处理篇之图像加马赛克

    马赛克是一种广为使用的图像处理手段,它是将影像特定区域的色阶细节劣化并造成色块打乱的效果.这种模糊看样子像一个个小格子,所以被称为马赛克.马赛克主要的目的就是使图像内容无法辨认,以保护特殊图像内容.这 ...

  9. 【图像转换】基于matlab灰度图像转换彩色图像【含Matlab 1233期】

    一.获取代码方式 获取代码方式1: 完整代码已上传我的资源:[图像转换]基于matlab灰度图像转换彩色图像[含Matlab 1233期] (https://download.csdn.net/dow ...

最新文章

  1. 武汉约100所中小学将试点人工智能课,现面向社会遴选教材
  2. bs4爬取的时候有两个标签相同_4.4 爬虫中的bs4数据爬取步骤
  3. DL之DNN:基于Tensorflow框架对神经网络算法进行参数初始化的常用九大函数及其使用案例
  4. 使用权重如何让一个控件的宽度为父控件的 1/3?
  5. java integer null 0_Mybatis Integer类型参数值为0时得到为空的解决方法
  6. WIN10 开启右键 命令提示符
  7. linux sd卡 读写速度测试_铠侠(原东芝存储)SD卡,大容量存储时代,高速读写选择...
  8. java spring getbean_spring依赖注入中获取JavaBean
  9. 包裹遭联邦快递不正常“转运” 华为:将重新审视双方合作关系
  10. 别踩白块儿游戏源代码分析和下载(二)
  11. java excel 批注_Java 添加、读取和删除 Excel 批注
  12. “Failed to load response data“ django@xframe_options_exempt 网站不许 Firefox 显示被嵌入的网页
  13. C#中的转义字符和Verbatim字符串
  14. Java的泛型---(英雄联盟集合嵌套案例)
  15. javascript 模拟退格键_javascript禁止Backspace退格键的多种方法
  16. 华为物联网(IOT)开发者平台
  17. mPaas苹果客户端离线包引入http的js白屏问题解决办法
  18. 沪江计算机考研老师,[回报沪江]从六级370到考研74,我的08研英之路[原创].doc
  19. 致远SPM解决方案之费用管理
  20. 如何使用CSS和JavaScript构建简单的甘特图

热门文章

  1. python+autoit用法
  2. 14的虚拟机可以用在15上面吗_MacOS虚拟机安装Linux(Ubuntu)
  3. linux的普通用户不能执行关机命令,linux:root用户让普通用户可以使用关机命令...
  4. object转换为数组_从V8源码分析一个JS 数组的内存占用问题
  5. 写给WEB2.0的站长 不仅仅是泼冷水(转)
  6. apache支持laravel路由_swoole运行模式加速laravel应用的详细介绍
  7. Oracle数据库练习题
  8. java设置行的长度_Java 将数组设置为指定的长度,必要时刮除或填充结尾。
  9. Origin 画不等距数据分布直方图
  10. android过滤文件删除,Android Studio Git 过滤(忽略)和移除不必要上传的文件