效果:

步骤

1.参数设定及图片导入

可以只更改背景图片其实

bkgPic=imread(‘test.jpg’);%图片地址
lineDensity=0.6; %故障线条出现概率
lineLenRange=[50,80]; %故障线条长度范围
greenMoveLen=10; %绿移距离

原始图片:

2.图片灰度化及红蓝背景构造
[m,n,k]=size(bkgPic);
if k~=1bkgPic=rgb2gray(bkgPic);
endmatSize=[n,m];
vector=[1,0];
colorList=[21    27   14368    22   11394    72   151175   152   192221   188   204217   156   174203    82   104232    31    37151     5    11];colorMat=vColorMat(matSize,vector,colorList);
blueRedPic=uint8(double(colorMat).*double(bkgPic)./200);

其中所需要的渐变图构造函数可以看这篇博客:
MATLAB 各类二维渐变图
所用到的渐变图构造函数在这:

function colorMat=vColorMat(matSize,vector,colorList)
% matSize=[800,600];
% vector=[1,12];
% colorList=[195    53    93
%    211   102   141
%    231   179   192
%    229   182   172
%    227   178   137
%    238   191   147
%    236   195   113];
% colorMat=vColorMat(matSize,vector,colorList)
% imshow(colorMat)vector=vector./norm(vector);
[xMesh,yMesh]=meshgrid(0:matSize(2)-1,0:matSize(1)-1);
zMesh=xMesh.*vector(2)+yMesh.*vector(1);
zMesh=(zMesh-min(min(zMesh)))./(max(max(zMesh))-min(min(zMesh)));colorFunc=colorFuncFactory(colorList);
colorMesh=colorFunc(zMesh);colorMat(:,:,1)=colorMesh(end:-1:1,1:matSize(1));
colorMat(:,:,2)=colorMesh(end:-1:1,matSize(1)+1:2*matSize(1));
colorMat(:,:,3)=colorMesh(end:-1:1,2*matSize(1)+1:3*matSize(1));colorMat=uint8(colorMat);function colorFunc=colorFuncFactory(colorList)x=(0:size(colorList,1)-1)./(size(colorList,1)-1);y1=colorList(:,1);y2=colorList(:,2);y3=colorList(:,3);colorFunc=@(X)[interp1(x,y1,X,'linear')',interp1(x,y2,X,'linear')',interp1(x,y3,X,'linear')'];endend

红蓝渐变图效果:

当然大家可以自己取色制作其他渐变

背景叠加效果:

3.绿移

将绿色通道向左侧移动几像素,为了方便起见就没有在右侧补充像素,因此绿移后的图像宽度会少几个像素(有保留原图像大小需求的可以尝试自行改写我的代码,只需要将图像两侧提前扩充好再进行像素移动即可)

Rchannel=blueRedPic(:,1+greenMoveLen:end,1);
Gchannel=blueRedPic(:,1:end-greenMoveLen,2);
Bchannel=blueRedPic(:,1+greenMoveLen:end,3);
gm_brPic(:,:,1)=Rchannel;
gm_brPic(:,:,2)=Gchannel;
gm_brPic(:,:,3)=Bchannel;

绿移效果:

可以看出人物主体出现了明显绿色偏移

4.添加故障线条

先随机抽取一定量不重复整数,在被抽中的行使用’motion’动态模糊滤波器,模糊长度由lineLenRange参数决定:

tempRand=rand(1,m);
[~,movePos]=sort(tempRand);
movePos=movePos(1:floor(m*lineDensity));
movePos=sort(movePos);movePic=gm_brPic(movePos,:,1);for i=1:size(movePic,1) H = fspecial('motion',randi(lineLenRange,[1,1]),0);movePic(i,:) = imfilter(movePic(i,:),H,'replicate');
endgm_brPic(movePos,:,1)=movePic;
imshow(gm_brPic);

效果:



5.完整代码

两个m文件:
BlueRed.m

function BlueRed
bkgPic=imread('test6.jpg');%图片地址
lineDensity=0.6;           %故障线条出现概率
lineLenRange=[50,80];      %故障线条长度范围
greenMoveLen=10;           %绿移距离[m,n,k]=size(bkgPic);
if k~=1bkgPic=rgb2gray(bkgPic);
endmatSize=[n,m];
vector=[1,0];
colorList=[21    27   14368    22   11394    72   151175   152   192221   188   204217   156   174203    82   104232    31    37151     5    11];colorMat=vColorMat(matSize,vector,colorList);
blueRedPic=uint8(double(colorMat).*double(bkgPic)./200);Rchannel=blueRedPic(:,1+greenMoveLen:end,1);
Gchannel=blueRedPic(:,1:end-greenMoveLen,2);
Bchannel=blueRedPic(:,1+greenMoveLen:end,3);
gm_brPic(:,:,1)=Rchannel;
gm_brPic(:,:,2)=Gchannel;
gm_brPic(:,:,3)=Bchannel;tempRand=rand(1,m);
[~,movePos]=sort(tempRand);
movePos=movePos(1:floor(m*lineDensity));
movePos=sort(movePos);movePic=gm_brPic(movePos,:,1);for i=1:size(movePic,1) H = fspecial('motion',randi(lineLenRange,[1,1]),0);movePic(i,:) = imfilter(movePic(i,:),H,'replicate');
endgm_brPic(movePos,:,1)=movePic;
imshow(gm_brPic);
end

vColorMat.m

function colorMat=vColorMat(matSize,vector,colorList)
% matSize=[800,600];
% vector=[1,12];
% colorList=[195    53    93
%    211   102   141
%    231   179   192
%    229   182   172
%    227   178   137
%    238   191   147
%    236   195   113];
% colorMat=vColorMat(matSize,vector,colorList)
% imshow(colorMat)vector=vector./norm(vector);
[xMesh,yMesh]=meshgrid(0:matSize(2)-1,0:matSize(1)-1);
zMesh=xMesh.*vector(2)+yMesh.*vector(1);
zMesh=(zMesh-min(min(zMesh)))./(max(max(zMesh))-min(min(zMesh)));colorFunc=colorFuncFactory(colorList);
colorMesh=colorFunc(zMesh);colorMat(:,:,1)=colorMesh(end:-1:1,1:matSize(1));
colorMat(:,:,2)=colorMesh(end:-1:1,matSize(1)+1:2*matSize(1));
colorMat(:,:,3)=colorMesh(end:-1:1,2*matSize(1)+1:3*matSize(1));colorMat=uint8(colorMat);function colorFunc=colorFuncFactory(colorList)x=(0:size(colorList,1)-1)./(size(colorList,1)-1);y1=colorList(:,1);y2=colorList(:,2);y3=colorList(:,3);colorFunc=@(X)[interp1(x,y1,X,'linear')',interp1(x,y2,X,'linear')',interp1(x,y3,X,'linear')'];endend

最前面提到的参数调整的不同会有不一样的效果哟

MATLAB 制作抖音同款故障风海报相关推荐

  1. MATLAB 制作抖音同款旋转星空海报图

    大概像是下面这样(我是真的不会设计海报,大家凑乎着看叭) 我们要制作的就是上面这样的背景图,文章最后由完整代码 步骤 1.导入图片 导入图片并获得长宽及通道数信息,图片需要和m文件在同一文件夹: I= ...

  2. MATLAB 制作抖音同款突出效果海报

    效果如下: 步骤 1.导入图片,获取每个区域的平均颜色,构造随机数矩阵 导入图片后我们首先将图片划分成很多个15x15(可自行调整大小)的小格子,并求取每个格子的颜色平均值,作为柱状图每个小柱子的颜色 ...

  3. MATLAB 制作抖音同款 立体人物文字海报

    效果如下: 步骤 1.导入图片并制作文字图 原图在这里: 原理就是创建一个隐藏的fig窗口,画完图后存储为图片,再调节至与原本图片相同大小 代码: string='you are very welco ...

  4. MATLAB 制作抖音同款炫光海报

    这篇其实步骤比较多,看效果: 步骤 0.图片导入 oriPic=imread('test.jpg'); 原始图片: 抖音上是做了铜板雕刻的像素化处理,由于MATLAB本身不具备这个功能,因此我们使用添 ...

  5. MATLAB 制作抖音同款含褶皱面料图

    效果如下:!!! 步骤 1.导入图片 我们需要导入一张褶皱图片(background.jpg)以及一张前景图片(foreground.jpg),将褶皱图片灰度化,将前景图调整至与褶皱图片相同大小: b ...

  6. Python制作抖音同款含褶皱面料图

    写在前面的话. 之前在码友slandarer的CSDN主页https://blog.csdn.net/slandarer看到他用MATLAB实现了几个有趣的图片处理趣案例,一时技痒,斗胆留言我也要用p ...

  7. 利用JS制作抖音同款3D照片墙(three.js)

    利用JS制作抖音同款3D照片墙(three.js) 520快到了,跟我一起学习threeJS 用threeJS制作抖音同款3D照片墙 源码下载:3D照片墙源码下载地址

  8. 细说如何制作抖音同款性格测试,运气测试网站(带代码讲解)

    Hi,大家好!我是你们活泼又可爱的小虎! 最近抖音很火的什么性格测试,运气值测试之类的,小虎研究了一下,发现了其中的奥秘!!! 开始说了,小板凳准备好了吗? 本来想给大家照几张样图,但是刷了半小时,就 ...

  9. Unity 制作抖音同款 罗马时钟

    这个罗马时钟 好像出来好久了在某音上,刚看到 觉得很 好玩,所以自己就想着实现一下 效果. 下面直接上图 先说一下制作思路:1. 文本的放置位置.2.时间的获取 和校正. 3. Text随着时间的刷新 ...

最新文章

  1. InnoDB和MyISAM区别
  2. Flask搭建二进制音频传送接口
  3. 【模拟】【codeforces】451B Sort the Array
  4. python os.environ gpu_Tensorflow下如何实现多GPU数据并行训练?
  5. python安装包-安装 Python 模块
  6. 声明:songzijian这个域名已经被抢注。大家别上了。不是我了。
  7. Hadoop MapReduce的一些相关代码Code
  8. 一篇文章教你如何使用python爬虫
  9. python execute_command err_Python management.execute_from_command_line方法代碼示例
  10. python循环指令_Python循环
  11. [译] ASP.NET 生命周期 – ASP.NET 请求生命周期(三)
  12. win10设置pg/pc接口_旧电脑升级!使用固态硬盘必做的5件事,让win10操作流畅如win7...
  13. CCF201903-4 消息传递接口(100分)【模拟】
  14. python的优点有哪些-python的优点和缺点是什么|python有哪些优缺点 - PS下
  15. 材价看板(1)- 如何建立你的第一个kanban,看看这些暴露的问题你们有没有?...
  16. 计算机桌面推流,OBS推流PPT电脑桌面投屏
  17. 手把手搭个vue的脚手架 - 2. 模板搭建
  18. 英语不规则动词变化时态变化表
  19. MySQL Error 1114
  20. 10月11日科技联播:美股暴跌引全球股市崩盘;腾讯跌出全球市值前十

热门文章

  1. 如何写好一个产品需求文档PRD
  2. UID_PS_01_大师之路
  3. 隐私公链Findora全景观察
  4. 实现一个Android锁屏App的难点总结 1
  5. iOS自定义相机实现拍照和连拍
  6. 一次项目开发中,收获的经验和教训
  7. 51地图 点击时取经纬度
  8. 安装软件总是遇到“Windows Installer 正在安装”,下载Windows Installer Clean Up安装不了
  9. JAVA SE面试题(全)
  10. blinker点灯开关组件