MATLAB 制作抖音同款故障风海报

article/2025/4/21 12:28:37

效果:
在这里插入图片描述
在这里插入图片描述

步骤

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

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


http://chatgpt.dhexx.cn/article/cQCU5FV0.shtml

相关文章

In-Loop Filters in HEVC

有两种滤波,一个deblock filter用来减弱因为transform和预测边界的不联系性;另外一个是SAO,通过减弱振铃效应和改变像素的强度来提升画质。https://blog.csdn.net/u014470361/article/details/94641124解释什么是块效应和振铃效应。 Deblocki…

改进维纳滤波的实现——光学稀疏孔径成像系统图像恢复算法研究 陈灏

本文简单实现了浙江大学陈灏硕士学位论文《光学稀疏孔径成像系统图像恢复算法研究》(2017)中4.2章节提及的改进维纳滤波算法。 前情提要:维纳滤波函数中不同K(噪声与原属图像功率谱之比)的取值对应复原效果不同,当K值比较小时(10^-4~10^-3)时&#xff0c…

冈萨雷斯DIP第4章知识点

文章目录 4.1 背景4.3 取样和取样函数的傅里叶变换4.5 二变量函数的傅里叶变换4.6 二维 DFT 和 IDFT 的一些性质4.6.6 二维离散卷积定理 4.7 频率域滤波基础4.7.3 频率域滤波步骤小结4.7.4 空间域和频率域滤波之间的对应关系 4.8 使用低通频率域滤波器平滑图像4.9 使用高通滤波…

频域图像增强(图像的频域分析)高通低通滤波器

1. 频率域平滑(低通) 图像的平滑除了在空间域中进行外,也可以在频率域中进行。 由于噪声主要集中在高频部分,为去除噪声改善图像质量,滤波器采用低通滤波器​​​​​​​ 来抑制高频成分,通过低频成分&a…

9.频率域锐化滤波

目录 一 理想高通滤波器 定义 二 巴特沃斯高通滤波器[BLPF] 定义 三 高斯高通滤波器[GLPF] 四 振铃效应对比 五 示例 六 区别和联系 数字图像处理的配套视频教程: 1.【冈萨雷斯-数字图像处理】开始安排续数字图像处理的教程_哔哩哔哩_bilibili 2. 数字图像…

【示波器专题】示波器探头的负载效应

理想的示波器探头可以轻松、精确的复制被探测信号。然而在现实的情况下,探头成为了电路的一部分。如在星球文章:【示波器专题】示波器探头的原理深入——无源探头 中我们讲到一个例子,低阻无源探头的最大好处就是以较低的价格提供了比较高的测试带宽。但缺点就是输入阻抗低(…

编码压缩带来的几种效应和原因

吉布斯效应 先来简要回顾一下吉布斯效应。 对于Gibbs现象,百度百科解释为:吉布斯现象(又叫吉布斯效应):将具有不连续点的周期函数(如矩形脉冲)进行傅立叶级数展开后,选取有限项进行合成。当选…

21.失真/低高通/振铃效应/旁瓣泄漏效应/频域滤波/图像深度/频带/线性滤波源码分析 -- OpenCV从零开始到图像(人脸 + 物体)识别系列

本文作者:小嗷 微信公众号:aoxiaoji 吹比QQ群:736854977 简书链接:https://www.jianshu.com/u/45da1fbce7d0 本文你会找到以下问题的答案: 失真/低高通/振铃效应和旁瓣泄漏效应/图片深度/频带/图像细节/线性滤波源码分析 失…

几种常用的假设图像边界条件用于抑制振铃效应及实现(下)

三 其他BC 1.Repeated BC Xu Zhou等人在《A boundary condition based deconvolution framework for image deblurring》提及,由于原文写的公式比较复杂不好理解,所以就不赘述了,其实核心就是外部边界区域内的某个像素点的灰度等于距离其最近…

振铃效应与样点自适应补偿(Sample Adaptive Offset,SAO)技术

SAO(Sample Adaptive Offset,自适应样点补偿)原理分析 这里写目录标题 SAO(Sample Adaptive Offset,自适应样点补偿)原理分析1. H265压缩原理2. SAO的作用3. SAO原理简介4. SAO的分类--BO5. SAO的分类--EO6…

几种常用的假设图像边界条件用于抑制振铃效应及实现(上)

一 介绍 传统的图像复原方法可能会给复原图像引入振铃效应,并且以边界振铃为主;产生这种现象的原因简单地来讲主要是由于模糊核的 不精确或者信息丢失。 [图片来自论文《光学合成孔径系统成像性能优化与分析》P79 魏小峰] Renting liu、Jiaya J…

rpm包的卸载

两个步骤: 1、查询 即查询Linux中安装的完整包名 命令【rpm -qa | grep xxx】 例如:rpm -qa | grep unzip 2、卸载 命令:rpm -e RPM包的完整名称 例如:rpm -e unzip-6.0-19.el7.x86_64 卸载之后检查发现已经不存在 - - -…

linux卸载命令6,小编为你叙述linux卸载命令【操作流程】

大家应该都知道我们在使用电脑的时候,会发现linux卸载命令【操作流程】的问题,如今还有很多用户不知道如何处理linux卸载命令【操作流程】的情况,于是我就给大家整理总结了linux卸载命令【操作流程】的具体处理方案,就是按照1&…

Linux常见命令 25 - RPM包安装、升级、卸载、查询、校验、提取

目录 1. 包名与包全名 2. RPM安装 3. RPM包升级 4. RPM包卸载 5. 查询是否安装RPM包 6. RPM包校验 7. RPM包中文件提取 1. 包名与包全名 包全名:操作的包是没有安装的软件包时,使用包全名,而且要注意路径包名:操作已经安…

linuxrpm命令卸载python_Linux RPM包安装、卸载、升级命令讲解

一个 RPM 包包含了已压缩的软件文件集以及该软件的内容信息,通常表现为以 .rpm 扩展名结尾的文件,例如 samba.rpm 。如果需要对RPM包进行操作则需要使用rpm命令。 一、RPM包的来源 所有RPM包都在系统光盘的Packages目录中,那么我们如何获取包…

rpm卸载包的命令

可以先用rpm -q xxx 或者 rpm -qf xxx/bin/xxxx.xx 来查询一下所属的rpm包的名字。然后用rpm -e xxxxxx 来删之。xxx/bin/xxxx.xx 是一个包中任意的文件xxxxxx 是查询得到的rpm包的名称 rpm -e的时候后面的文件名不用加版本号 安全地卸载 RPM卸载软件包,并不是简单地将原来安…

linux的rpm卸载,linux rpm卸载参数

linux rpm卸载参数 本站整理 发布时间:2009-03-10 15:38:48 作者:jb51.net 我要评论 rpm卸载参数--test : 卸载测试 --nodeps : 不检查依赖 --noscripts : 不执行脚本程序 --notriggers : 不执行触发程序 --justdb : 仅修改数据库 --force 强制 RPM卸载软件包,并不是…

rpm卸载命令

可以先用rpm -q xxx 或者 rpm -qf xxx/bin/xxxx.xx 来查询一下所属的rpm包的名字。 然后用rpm -e xxxxxx 来删之。 xxx/bin/xxxx.xx 是一个包中任意的文件 xxxxxx 是查询得到的rpm包的名称 rpm -e的时候后面的文件名不用加版本号 安全地卸载 RPM卸载软件包,并不是简单…

关于传递函数的双边线性Z变换+差分方程

下午查了一下午资料,翻看了一些书籍,看了一些视频学习!!!抛开这些,进入整体。 双边线性Z变换: 将S域虚轴和实轴改为Z域单位圆,由连续变为离散。 线性公式:(如…

基于深度学习的视频预测研究综述

原址:http://html.rhhz.net/tis/html/201707032.htm (收集材料ing,为论文做准备)[综述性文章,,,可以做背景资料] 莫凌飞, 蒋红亮, 李煊鹏 摘要:近年来,深度学习算法在众多有监…