【图像处理GUI】图像颜色过滤、颜色强调、反转颜色等(Matlab代码实现)

news2024/11/22 15:59:01

💥💥💞💞欢迎来到本博客❤️❤️💥💥

🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。

⛳️座右铭:行百里者,半于九十。

📋📋📋本文目录如下:🎁🎁🎁

目录

💥1 概述

📚2 运行结果

🎉3 参考文献

🌈4 Matlab代码实现


💥1 概述

【图像处理GUI】提供多种图像处理功能

这个GUI设计用于展示一些基本的图像处理功能,并且能够满足用户对图像颜色过滤、颜色强调、反转颜色等需求。用户只需加载任何基本图像文件类型,即可利用提供的功能生成想要的图像效果。

该演示程序提供了一些非常基础的图像处理功能。下图显示了实现的GUI的截图。一般来说,图形用户界面(GUI)会绘制加载的原始图像,并提供一系列处理功能,用户可以选择任意功能来生成他们所需的图像效果。此外,在图形用户界面的左侧,还绘制了两幅图像的RGB直方图,帮助用户进一步了解图像的色彩分布情况。

通过这个GUI,用户可以轻松实现对图像的色彩控制和调整。颜色过滤功能允许用户选择特定的颜色通道进行过滤,以突出显示或减弱某种颜色。颜色强调功能则可以增强图像中的某个或多个颜色,使其更加鲜明和突出。反转颜色功能则能够将图像的颜色取反,带来截然不同的视觉效果。

此外,该GUI还支持其他一些图像处理功能,如运动过滤、锐化、模糊等。用户可以根据自己的需求选择使用这些功能,以达到更好的图像效果。

综上,这个图像处理GUI为用户提供了一个简单而强大的工具,让他们能够轻松实现对图像的颜色处理和效果增强。无论是普通用户还是专业设计师,都能够通过这个GUI实现他们对图像的个性化处理需求。

📚2 运行结果

图1:提供的图形用户界面的截图
具体而言,通过GUI按钮提供以下功能:
 加载文件:使用此按钮加载图像文件。在当前版本中,仅支持JPEG、GIF、TIFF和BMP图像格式。
保存文件:使用此按钮保存当前的辅助图像。
复制:此按钮将原始图像复制到辅助图像中。
灰度:此按钮生成原始(加载的)图像的灰度版本。
中值:此按钮在原始图像上应用中值滤波。为此,调用Matlab内置函数medfilt2。此外,用户需要提供滤波器掩模的大小,不是以像素为单位,而是以原始图像尺寸的百分比表示(例如,宽度的2%和高度的3%)。图2(b)展示了中值滤波的示例(滤波器大小选择为图像尺寸的3%)。

运动:此功能应用了一种近似相机线性运动的滤波器。为了生成适当的滤波器掩模,调用函数fspecial,并设置"motion"属性值。此时,用户需要提供运动方向(以度为单位,[0..360])以及运动长度(不是以像素为单位,而是以图像较大尺寸的百分比表示)。为了应用生成的掩模,使用imfilter函数。图2(c)和2(d)分别展示了0度和90度运动方向的运动滤波过程的结果。
锐化:此按钮对原始图像进行锐化。为了生成锐化掩模,使用了fspecial函数。此外,使用了imfilter函数来应用采用的图像滤波器。图2(e)给出了该过程的示例。
过滤颜色:此功能创建了一个具有彩色区域的原始图像的灰度版本。当按下相应的按钮时,用户需要为R、G和B系数中的每个系数提供3个阈值(范围为[0..255]),阈值越大,颜色阈值就越"宽松"(即,一般来说,较大的阈值会导致图像中有更多的彩色区域)。然后,用户将获得原始图像的副本,并被要求使用鼠标在图像上选择5个点。然后,计算这些颜色的平均值,并对图像应用简单的阈值处理步骤(使用在过程开始时提供的阈值)。在图2(f)中,我们从黄色(出租车上)选择了5个点,而R、G和B系数的颜色阈值分别选择为130、130和30。
颜色强调:此功能允许用户强调RGB空间的特定系数。在图2(g)中,我们通过150%强调了R系数。
反转颜色:此按钮用于反转图像的颜色。图2(h)给出了此功能的示例。
更改对比度和亮度:在设置对比度和亮度因子后(使用提供的滑块),使用此按钮。图2(i)显示了亮度和对比度调整的示例。

整体效果:

 部分代码:

% --- Outputs from this function are returned to the command line.
function varargout = imageProc_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in LoadButton.
function LoadButton_Callback(hObject, eventdata, handles)
% hObject    handle to LoadButton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

[FileName,PathName] = uigetfile({'*.*'},'Load Image File');

if (FileName==0) % cancel pressed
    return;
end


handles.fullPath = [PathName FileName];
[a, b, Ext] = fileparts(FileName);
availableExt = {'.bmp','.jpg','.jpeg','.tiff','.png','.gif'};
FOUND = 0;
for (i=1:length(availableExt))
    if (strcmpi(Ext, availableExt{i}))
        FOUND=1;
        break;
    end
end

if (FOUND==0)
    h = msgbox('File type not supported!','Error','error');
    return;
end

set(handles.sliderRotate, 'Enable', 'on');
set(handles.sliderBright, 'Enable', 'on');
set(handles.sliderContrast, 'Enable', 'on');
set(handles.editPath, 'Visible', 'on');
set(handles.editSize, 'Visible', 'on');
set(handles.editComment, 'Visible', 'on');


info = imfinfo(handles.fullPath);
if (~isempty(info.Comment))
    % save current image comment (to be used later in image save)
    handles.currentImageComment = info.Comment{1};
else
    handles.currentImageComment = '';
end

set(handles.editSize, 'String', sprintf('SIZE (W x H) : %d x %d', info.Width, info.Height));
set(handles.editComment, 'String', sprintf('COMMENT: %s', handles.currentImageComment));
set(handles.editPath', 'String', handles.fullPath);

% --- Outputs from this function are returned to the command line.
function varargout = imageProc_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

% Get default command line output from handles structure
varargout{1} = handles.output;


% --- Executes on button press in LoadButton.
function LoadButton_Callback(hObject, eventdata, handles)
% hObject    handle to LoadButton (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

[FileName,PathName] = uigetfile({'*.*'},'Load Image File');

if (FileName==0) % cancel pressed
    return;
end


handles.fullPath = [PathName FileName];
[a, b, Ext] = fileparts(FileName);
availableExt = {'.bmp','.jpg','.jpeg','.tiff','.png','.gif'};
FOUND = 0;
for (i=1:length(availableExt))
    if (strcmpi(Ext, availableExt{i}))
        FOUND=1;
        break;
    end
end

if (FOUND==0)
    h = msgbox('File type not supported!','Error','error');
    return;
end

set(handles.sliderRotate, 'Enable', 'on');
set(handles.sliderBright, 'Enable', 'on');
set(handles.sliderContrast, 'Enable', 'on');
set(handles.editPath, 'Visible', 'on');
set(handles.editSize, 'Visible', 'on');
set(handles.editComment, 'Visible', 'on');


info = imfinfo(handles.fullPath);
if (~isempty(info.Comment))
    % save current image comment (to be used later in image save)
    handles.currentImageComment = info.Comment{1};
else
    handles.currentImageComment = '';
end

set(handles.editSize, 'String', sprintf('SIZE (W x H) : %d x %d', info.Width, info.Height));
set(handles.editComment, 'String', sprintf('COMMENT: %s', handles.currentImageComment));
set(handles.editPath', 'String', handles.fullPath);

🎉3 参考文献

文章中一些内容引自网络,会注明出处或引用为参考文献,难免有未尽之处,如有不妥,请随时联系删除。

[1]王凤兰,曙光,洪炳镕.彩色图像处理中照明颜色的过滤方法[J].哈尔滨工业大学学报, 2004, 36(007):949-950.DOI:10.3321/j.issn:0367-6234.2004.07.034.

[2]关丛荣,王虹.基于RGB空间的彩色图像处理GUI设计[J].黑龙江工程学院学报, 2008, 22(2):5.DOI:10.3969/j.issn.1671-4679.2008.02.020.

[3]关丛荣,王虹.基于RGB空间的彩色图像处理GUI设计[J].黑龙江工程学院学报(自然科学版), 2008.

[4]廖春生.浅谈图形图像处理中的几种颜色模式[J].佳木斯职业学院学报, 2011, 000(005):169-170.

🌈4 Matlab代码实现

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1071894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tomcat历史版本下载地址(Tomcat7或更早)

官网地址直达 随便选择一个版本 点击找到自己想要的版本下载就可以了!

干洗店会员管理系统上门洗鞋小程序介绍

干洗店管理系统,洗衣洗鞋店收银会员管理小程序,是在传统的洗护行业中,使用现在比较流行的线上下单系统,可以帮助门店实现便捷收银、会员管理、商品销售等功能。 具体如下: 1.会员管理:支持会员储值&#xf…

CSS 之 table 表格布局

一、简介 ​ 除了使用HTML的<table>元素外&#xff0c;我们还可以通过display: table/inline-table; 设置元素内部的布局类型为表格布局。并结合table-cell、table-row等相关CSS属性值可以实现HTML中<table>系列元素的效果&#xff0c;具有表头、表尾、行、单元格…

面试题:如何正确的停掉线程?

文章目录 前言为什么不强制停止如何用 interrupt 停止线程sleep 期间能否感受到中断停止线程的方式有几种总结 前言 启动线程需要调用 Thread 类的 start() 方法&#xff0c;并在 run() 方法中定义需要执行的任务。启动一个线程非常简单&#xff0c;但如果想要正确停止它就没那…

在PicGo上使用github图床解决typora上传csdn图片不显示问题(保姆级教程)

文章目录 在PicGo上使用github图床解决typora上传csdn图片不显示问题&#xff08;保姆级教程&#xff09;1、typora上传csdn图片不显示&#xff08;外链图片转存失败&#xff09;2、PicGo2.1、PicGo下载2.2、PicGo使用2.2.1、对PicGo完成基本的配置2.2.2、配置github图床2.2.3、…

vue3+elementPlus:el-tree复制粘贴数据功能,并且有弹窗组件

在tree控件里添加contextmenu属性表示右键点击事件。 因右键自定义菜单事件需要获取当前点击的位置&#xff0c;所以此处绑定动态样式来控制菜单实时跟踪鼠标右键点击位置。 //html <div class"box-list"><el-tree ref"treeRef" node-key"id…

SCADA系统是什么意思?

监控和数据采集 (SCADA) 是一种计算机控制系统&#xff0c;用于监视和控制工厂过程。该软件使用数据通信、图形用户界面和扩展管理来监视和控制系统。 概述 世界上最大的制造公司也被认为是最受数据驱动的企业。在技​​术能力不断增强的时代&#xff0c;随着 SCADA 等系统的使…

认识python就是这么简单!

我的笔记里的python代码运行环境都是在pycharm软件中运行&#xff0c;所以不去记录如何配置环境变量呀什么的。 python种类 Cpython&#xff1a; Python的官方版本&#xff0c;使用C语言实现&#xff0c;使用最为广泛&#xff0c;CPython实现会将源文件&#xff08;py文件&a…

学生用的台灯护眼的哪种比较好?精选适合学生用的护眼台灯

现代小孩的学习压力确实很大&#xff0c;已经不能和我们以往那种“半大自然化学习”相提并论啦&#xff0c;如今各种学习PAD、电脑网课&#xff0c;成堆的学习资料与作业&#xff0c;恐怕是从小学甚至学前就已经是常态了。而且在平时我们路过学校的时候应该也不难发现&#xff…

为SecureCRT配置密钥验证,实现免密登录远程Linux服务器

本实例以普通用户zhangsan远程连接Linux服务器为例。 一、生成密钥对 在Linux服务器上为普通用户zhangsan远程连接服务器制作密钥对&#xff0c;执行命令如下&#xff1a; [rootServer ~]# su - zhangsan #切换到zhangsan身份登录 [zhangsanServer ~]$ ssh-keygen #生成…

JAVA项目点赞功能如何实现?如何利用缓存优化?如何防止刷赞?

- 普通的点赞如何实现&#xff1f; - 每个人都见过点赞功能&#xff0c;大家想实现一个点赞功能也简单&#xff0c;比如一个简单的文章点赞逻辑如下&#xff1a; 首先需要建个表&#xff0c;记录下点赞人的id&#xff0c;被点赞文章的id&#xff0c;点赞状态三个关键因素即可&a…

【modprobe_path】RWCTF2022-Digging-into-kernel-2

启动脚本&#xff1a; qemu-system-x86_64 \-kernel bzImage \-initrd rootfs.cpio \-append "consolettyS0 root/dev/ram rdinit/sbin/init quiet kaslr" \-cpu kvm64,smep,smap \-monitor null \--nographic \-s 开启了 smep、smap、kaslr保护。 程序分析 单独创…

ceph版本和Ceph的CSI驱动程序

ceph版本和Ceph的CSI驱动程序 ceph查看ceph版本Ceph的CSI驱动程序 ceph ceph版本和Ceph的CSI驱动程序 查看ceph版本 官网ceph-releases-index Ceph的CSI驱动程序 Ceph的CSI驱动程序 https://github.com/ceph/ceph-csi

Docker项目部署lnmp+wordpress

一.项目环境 公司在实际的生产环境中&#xff0c;需要使用Docker 技术在一台主机上创建LNMP服务并运行Wordpress网站平台。然后对此服务进行相关的性能调优和管理工作。 1.1 环境描述 主机 操作系统 IP地址 主要软件 Docker C…

HTTP长连接实现原理

1. HTTP长连接和短连接的定义 HTTP长连接 浏览器向服务器进行一次HTTP会话访问后&#xff0c;并不会直接关闭这个连接&#xff0c;而是会默认保持一段时间&#xff0c;那么下一次浏览器继续访问的时候就会再次利用到这个连接。在HTTP/1.1版本中&#xff0c;默认的连接都是长连…

《Python 自动化办公应用大全》书籍推荐(包邮送书五本)

前言 随着科技的快速发展和智能化办公的需求增加&#xff0c;Python自动化办公成为了一种趋势。Python作为一种高级编程语言&#xff0c;具有简单易学、功能强大和开放源代码等优势&#xff0c;可以帮助我们更高效地完成日常办公任务。 Python自动化办公还可以帮助我们实现更…

数据结构-二叉查找树(BST)

二叉查找树 需要满足这些规则&#xff1a; 左子节点小于父节点右子节点大于父节点 查找的效率 非常好&#xff0c;每次都能根据大小去舍弃另一半的分支&#xff0c;极大的减少的比对次数 具体的性能&#xff0c;取决于树的层数和平衡程度。 BST树的节点 struct Node {No…

HTML5+CSSday4综合案例二——banner效果

bannerCSS展示图&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"wi…

Unity实现设计模式——策略模式

Unity实现设计模式——策略模式 策略模式是一种定义一些列算法的方法&#xff0c;这些所有的算法都是完成相同的工作&#xff0c;只是实现不同。它可以通过相同的方式调用所有的算法&#xff0c;减少各种算法类与使用算法类之间的耦合。 策略模式的 Strategy 类层次为 Contex…

微信黑名单在哪里找出来?掌握4个步骤即可!

微信的黑名单功能可以帮助用户过滤掉一些不友好的联系人&#xff0c;从而在一定程度上限制与这些联系人的互动。在使用微信的过程中&#xff0c;如果不想被一些陌生人或者恶意用户骚扰&#xff0c;那么可以通过将这些人拉入黑名单来阻断联系。 但是如果是和熟人吵架&#xff0…