-
图像处理软件开发记录(二) 基本图像处理
2014-03-31 11:34:33本篇博客主要记录Image图像处理软件的基本图像处理,包括黑白图像、图像柔化、图像锐化。 图像黑白化 现在我们得到的大多数图像都是彩色图像,那么如果想要把它变成黑白图像,该怎么操作呢? 一个简单的方法就是...专栏地址:http://blog.csdn.net/column/details/imagep.html
本篇博客主要记录Image图像处理软件的基本图像处理,包括黑白图像、图像柔化、图像锐化。
图像黑白化
现在我们得到的大多数图像都是彩色图像,那么如果想要把它变成黑白图像,该怎么操作呢?
一个简单的方法就是——利用cvtColor实现。
cvtColor的原型如下:
C++: void cvtColor(InputArray src, OutputArray dst, int code, int dstCn=0 )
在cvtColor中利用CV_BGR2GRAY, CV_RGB2GRAY就可以实现从RGB图像转换为黑白图像。
转换公式如下:
Code:
void MainWindow::on_actionBlackWhite_triggered() { cv::Mat bw; cv::cvtColor(image,bw,CV_BGR2GRAY); QImage bimg = QImage((const uchar*)(bw.data),bw.cols,bw.rows,QImage::Format_Indexed8); ui->Imagedisplaylabel->setPixmap(QPixmap::fromImage(bimg)); //ui->Imagedisplaylabel->setScaledContents(true); //ui->Imagedisplaylabel->resize(ui->Imagedisplaylabel->width(),ui->Imagedisplaylabel->height()); }
Example:
References:
图像柔化
图像柔化其实也就是图像模糊(平滑),算是一个非常简单的操作。
Code:
void MainWindow::on_actionSmooth_triggered() { cv::Mat Smooth; cv::namedWindow("Ori"); cv::imshow("Ori",image); cv::GaussianBlur(image,Smooth,cv::Size(5,5),5); cv::namedWindow("S"); cv::imshow("S",Smooth); }
Example:
图像锐化
所谓图像锐化就是要突出图像的边缘信息,加强图像的轮廓特征,以便于人眼的识别。图像锐化是与图像平滑相反的一类处理。它主要分为:空域处理方法和频域处理方法。这里要讲的是类似Photoshop的unsharpe mask锐化,从概念上讲,unsharpe mask就是首先从原图上生成一个模糊拷贝,用原图减去这个拷贝,得到原图的边界,类似于经过一次高斯过滤查找到图像的边界。这个图像边界就是我们需要的mask。
整个锐化过程如下所示:
(上图改进方案见文献Image Enhancement via Adaptive Unsharp Masking)
一个简单的实例:
Code:
void MainWindow::on_actionSharpe_triggered() { cv::namedWindow("ori_s"); cv::imshow("ori_s",image); cv::Mat sharpe; cv::GaussianBlur(image,sharpe,cv::Size(5,5),5); cv::addWeighted(image,1.5,sharpe,-0.6,0,sharpe); cv::namedWindow("sharpe"); cv::imshow("sharpe",sharpe); }
Example:
References:
更多图像处理资源,请关注博客:LinJM-机器视觉微博:林建民-机器视觉
-
基于MatlabGUI的图像处理软件开发
2011-05-01 17:49:36利用matlab做图形图像处理界面,实现图像的打开,显示,翻转等功能 -
原生态基于OpenCV图像处理软件开发
2020-04-18 18:31:25 -
图像处理软件开发记录(一) 系统概述
2014-03-26 21:19:49本系列博客主要记录Image_Lin图像处理软件的开发记录。 Image_Lin软件计划实现的功能包括: (一)、基本图像处理(黑白、锐化、柔化、补光) (二)、人像美容(人脸美肤) (三)、图像特效(素描、油画、浮雕、...专栏地址:http://blog.csdn.net/column/details/imagep.html
本系列博客主要记录Image_Lin图像处理软件的开发记录。
Image_Lin软件计划实现的功能包括:
(一)、基本图像处理(黑白、锐化、柔化、补光)
(二)、人像美容(人脸美肤)
(三)、图像特效(素描、油画、浮雕、怀旧、Lomo)
(四)、图像去雾
Image_Lin图像处理的开发工具是:QT+OpenCV
这一篇博客我主要对QT和OpenCV进行一个简单的介绍。
QT是一个跨平台的C++图形用户界面应用程序框架,首度为公众可用是在1995年5月。它最初由Haavard Nord和Eirik Chambe-Eng开发而成。当前最新的版本是Qt5.2,下载地址。
一些关于QT的教程如下:
下面,我谈谈Qt的元对象系统
Qt的主要成就之一就是使用了一种机制对C++进行了扩展,并且使用这种机制创建了独立的软件组件。这些组件可以绑定在一起,但任何一个组件对于它所要连接的组件的情况事先一无所知。
这种机制称为元对象系统(meta-object system),它提供了关键的两项技术:信号-槽以及内省(introspection)。内省功能对于实现信号与槽是必需的,并且允许应用程序的开发人员在运行时获得有关QObject子类的“元信息”,包括一个含有对象的类名以及它所支持的信号和槽的列表。这一机制也支持属性和文本翻译,并且它也为QtScript模块奠定了基础。从Qt4.2开始,可以动态添加属性。
标准C++没有对Qt的元对象系统所需要的动态元信息提供支持。Qt通过提供一个独立的moc工具解决了这个问题,moc解析Q_OBJECT类的定义并且通过C++函数提供可供使用的信息。由于moc使用纯C++来实现它的所有功能,所以Qt的元对象系统可以在任意C++编译器上工作。
这一机制是这样工作的:
- Q_OBJECT宏声明了在每一个QObject子类中必须实现的一些内省函数:metaObject()、tr()、qt_metacall(),以及其他一些函数。
- Qt的moc工具生成了用于由Q_OBJECT声明的所有函数和所有信号的实现。
- 像connect()和disconnect()这样的QObject的成员函数使用这些内省函数来完成它们的工作。
OpenCV是一个基于开源发行的跨平台计算机视觉库,它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
当前最新的版本是2.4.8,下载地址。
一些入门教程:
更多图像处理、机器视觉资源请关注 博客:LinJM-机器视觉 微博:林建民-机器视觉
-
图像处理软件开发记录(三) QT图像显示
2014-03-31 18:25:18这一篇文章记录有关图像显示的问题。 因为对QT的研究不深,所以在QT上显示图像的设计过程真是坎坎坷坷。 在最开始,我用的显示方法最简单,就是用label来显示,就是下面这个: ui->label->setPixmap...专栏地址:http://blog.csdn.net/column/details/imagep.html
这一篇文章记录有关图像显示的问题。
因为对QT的研究不深,所以在QT上显示图像的设计过程真是坎坎坷坷。
在最开始,我用的显示方法最简单,就是用label来显示,就是下面这个:
ui->label->setPixmap(QPixmap::fromImage(img));
可是发现显示效果太差,为什么呢?
原因是图片的显示被束缚在我原始所画的label大小之下,当我想要显示比这个label更大的图片时,比如我输入一张完整的lena图像,无法显示完整。如下所示:
然后,我就得想办法解决这个问题。
很明显,把label的大小设置的大一点不是一个好的解决方案。
那么,我后来就想,把图片的大小压缩显示,这个思路清晰简单。ui->label->setPixmap(QPixmap::fromImage(img)); ui->label->setScaledContents(true); ui->label->resize(ui->label->width(),ui->label->height());
可是还是遇到一个问题:图片变形了,如下所示:
在以上问题出现后,我曾经这么想:选择一个合适的压缩比显示图片,就是说,我比较图片的大小和label的大小,然后根据它们之间的比例关系按图片的原始长宽比例缩减图片大小:
float cols_temp = image.cols; float wid_temp = ui->Imagedisplaylabel->width(); float rows_temp = image.rows; float hei_temp = ui->Imagedisplaylabel->height(); float ratio1 = cols_temp/wid_temp; float ratio2 = rows_temp/hei_temp; float ratio = 0.0; if (ratio1 > ratio2) ratio = ratio1; else ratio = ratio2; int width_re = ui->Imagedisplaylabel->width()/ratio; int height_re = ui->Imagedisplaylabel->height()/ratio; ui->Imagedisplaylabel->resize(width_re,height_re);
可是很不幸,无法达到好的效果。
最后,我在浏览博客 基础学习笔记之opencv(15):离散傅里叶变换的时候看到它的显示效果居然没有变形:
然后才发现,原来用Text Browser也可以显示图片。
Code如下:
void MainWindow::on_actionOpen_triggered() { QString filename = QFileDialog::getOpenFileName(this,tr("Open Image"),".",tr("Image Files(*.png *.jpg *.jepg *.bmg)")); image = cv::imread(filename.toLatin1().data()); cv::Mat temp; cv::cvtColor(image,temp,CV_BGR2RGB); //QImage img = QImage((const unsigned char*)(temp.data),temp.cols,temp.rows,QImage::Format_RGB888); QString path = QString("<img src=\"%1\"/>").arg(filename); ui->textBrowser->setFixedHeight(image.rows); ui->textBrowser->setFixedWidth(image.cols); ui->textBrowser->clear(); ui->textBrowser->append(path); }
显示效果如下:另外,其实在最开始的时候我还没意识到使用布局方法,最后才发现布局方法的使用能够使窗口的结构布局适应窗口的变化。
References:
QTextEdit/QTextBrowser添加彩色文字与图片
更多图像处理、机器学习资源,请关注博客:LinJM-机器视觉 微博:林建民-机器视觉 -
图像处理软件开发记录(六) 图像特效(浮雕、怀旧)
2014-04-01 17:22:25本篇文章主要记录一下图像处理软件中的图像特效(浮雕、怀旧、Lomo)的实现过程。 图像浮雕效果 浮雕的算法就是对图像中的每一个点做卷积处理,采用的掩模矩阵如下所示: [1 0 0; 0 0 0; 0 0 -1] 假设原图像为... -
图像处理软件开发记录(五) 图像特效(素描、油画)
2014-03-31 22:26:19本篇文章主要记录一下图像处理软件中的图像特效(素描和油画)的实现过程。 图像素描效果 图像素描的实现原理其实很简单,主要是利用边缘检测滤波器来实现。 可供选择的边缘检测滤波器有很多,常用的有Sobel、... -
图像处理软件开发记录(四) 美肤功能实现
2014-03-31 20:38:17这个功能基本上很多软件都有,比如美图秀秀,女生们的最爱。 美肤的原理,简单来说,其实就是图像平滑操作,不过在这个平滑的过程中最好不能把轮廓给模糊掉。美图秀秀美肤操作的技术没公开,我这里就只谈谈采用双边... -
自己写的论文基于GUI的图像处理软件平台的开发-GUI图像处理软件制作详细介绍论文.rar
2019-08-14 02:55:33自己写的论文基于GUI的图像处理软件平台的开发-GUI图像处理软件制作详细介绍论文.rar 大家好,我的目标是努力打造精品文章,这个文章是我做完GUI图像处理软件后刚写的,写的目的是为了交流,为初学者起抛砖引玉之... -
摄像头视频和图像处理软件-MATLAB视频和图像处理软件.pdf
2019-08-13 17:11:50摄像头视频和图像处理软件-MATLAB视频和图像处理软件.pdf 本帖最后由 jacket2015 于 2015-2-18 00:10 编辑 MATLAB视频和图像处理软件 功能描述: 1、 本软件具有利用摄像头抓拍图像和视频的功能。可以设定抓拍... -
数字图像处理软件
2018-07-04 19:52:12这是我毕设做的一个数字图像处理软件。Qt creator集成环境开发,调用OpenCV,采用C++编写,适用于PC端windows系统。能够实现数字图像处理中的图像变换、灰度处理、图像平滑、图像增强、边缘检测、图像分割等常见功能... -
自己开发的遥感图像处理软件
2009-11-23 19:39:44基于GDAL库开发,支持9种格式影像数据的读写,支持包括直方图统计、图像信息数据统计、影像缩放、平移、遥感图像的几何纠正,监督和非监督分类、各种类型的时域、频域滤波增强等获得程序设计大赛二等奖,可以在此... -
Python-ImagePy是一个用Python开发的图像处理软件支持bmprgbpng等常用的图像格式
2019-08-10 04:35:15ImagePy是一个用Python开发的图像处理软件,支持bmp,rgb,png等常用的图像格式。 它可以处理灰度图像和多通道(彩色)图像,并支持图像堆栈(序列)操作。 它支持多种选择操作(点,线,面,多线,多面,空心多边形... -
开源图像处理软件
2018-11-13 18:11:02要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益、多面出击。如今网络发达,图像学的资料其实也到处都是。只是往往个人能力或精力有限,在短时间内无法找到那些也许藏... -
基于OpenCVSharp的图像处理软件
2019-01-08 19:32:47本次任务是设计一个能够实现OpenCV部分功能的图像处理软件。目的在于方便图像处理人员在具体编写OpenCV程序前,提前能够对图像进行简单处理,进而帮助开发人员分析该如何对图像进行处理。 使用C#对界面和逻辑进行... -
SPM医学图像处理软件手册
2013-01-03 06:48:01SPM是一个医学图像处理软件,基于MATLAB开发的 -
开源图像处理软件代码
2019-10-18 20:47:46要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益、多面出击。如今网络发达,图像学的资料其实也到处都是。只是往往个人能力或精力有限,在短时间内无法找到那些也许藏... -
常用图像处理软件
2019-10-30 12:01:001、 最著名的开源图像软件:GIMP。 开发语言:C GIMP号称Linux下的PhotoShop,总观其工程,确实达到了PhotoShop早期版本的功能。三大利器:选区、图层、蒙板一应俱全,滤镜也非常丰富,支持插件。缺点就是界面不... -
图像处理软件ImageJ
2019-10-08 06:49:15ImageJ是一个基于java的公共的图像处理软件,它是由National Institutes of Health开发的。可运行于Microsoft Windows,Mac OS,Mac OS X,Linux,和Sharp Zaurus等多种平台。其基于java的特点,使得它编写的程序能... -
C++开发图像处理软件需要这么做
2014-05-16 16:36:33各位大神,本人只会基础的编程语言,以前用过vb开发过有界面的程序,现在想用C++开发有界面的程序,而且希望能够绘图,和图像处理,甚至是三维图像处理,求大家赐教。本人只会编程语言,其余都是空白,求[color=#FF... -
图像处理 区域删除_Image J 图像处理软件(操作视频资源+软件资源)
2020-12-05 06:49:30Image J 是一个基于java的公共的图像处理软件,它是由National Institutes of Health开发的。可运行于Microsoft Windows,Mac OS,Mac OS X,Linux,和Sharp Zaurus PDA等多种平台。其基于java的特点, 使得它编写的... -
图像处理 区域删除_Image J 图像处理软件(操作视频资源+软件安装包)
2020-12-05 06:49:18Image J 是一个基于java的公共的图像处理软件,它是由National Institutes of Health开发的。可运行于Microsoft Windows,Mac OS,Mac OS X,Linux,和Sharp Zaurus PDA等多种平台。其基于java的特点, 使得它编写的... -
论文研究 - 用CARTOMORPH软件开发的多光谱图像处理系统—NDVI模块
2020-05-27 14:48:12前者是巴西的免费软件,由美国国家空间研究所(INPE)开发,致力于图像处理和地理信息系统(GIS)分析以及传统的遥感图像分析系统ENVI。 结果证明该模块的实现是正确的,从而可以在制图学领域和环境应用中潜在使用... -
图像处理实训:基于 C# winform和 OpenCV 完成一个图像处理软件
2017-09-05 11:45:08采用 C# winform 完成界面编程,用非托管的 C++语言编写图像处理逻辑。...这种方式既发挥了 C# winform 界面编程的快速开发的优点,又保证了用非托管的 C++语言编写图像处理逻辑的执行高效的优点。 -
FPGA图像处理开发流程
2020-10-29 23:25:23FPGA图像处理开发流程 在掌握FPGA基本知识以及数字图像处理基础...一个常规的FPGA图像处理开发流程是由需求分析及问题描述、软件算法设计及验证、硬件平台设计、FPGA映射以及仿真验证几部分组成。如下图所示: 一、需 -
HALCON图像处理软件
2008-08-25 16:03:00HALCON图像处理软件时间:2006-3-6 14:29:16 来源:维视数字视频图像监控网 阅读1817次 什么是HALCON? HALCON包含些什么? HALCON是在世界范围内广泛使用的机器视觉软件。用户可以利用其开放式结构快速开发... -
立志于软件开发 图像处理 金融数据挖掘 机电一体化设计
2016-08-18 22:05:19立志于软件开发 图像处理 金融数据挖掘 机电一体化设计 -
基于MATLAB GUI的图像处理软件平台的开发(转自深寒的博客)
2014-11-05 21:36:05摘要:本文主要介绍了基于MATLAB的图形用户界面(GUI)来制作图像处理软件平台的具体过程和相关技巧,文章主要从几个方面展开论述:第一,简单介绍下GUI与GUIDE;第二,介绍以下GUIDE的模板及其操作方法;第三,详细...
-
07 Python编程语言基础技术框架(3)之print输出.mp4
-
四、Python--容器入门
-
Unity游戏开发之数字华容道
-
萝丽双路单向电调 - 固件.rar
-
易语言开发通达信DLL公式接口
-
AgileOne1.1正式版
-
09 Python编程风格(1).mp4
-
关于java中redis访问直接使用jedis和使用springboot封装的RedisTemplate效率对比和主要区别
-
蓝桥杯 入门训练 BEGIN-3 圆的面积
-
Soul源码总结-01-16
-
02 Python编程语言初接触.mp4
-
lceda-windows-x64-6.4.7.exe
-
第3章 入门程序、常量、变量
-
【TensorFlow】复杂度学习率
-
2019-2-10
-
浙大版《数据结构(第2版)》题目集习题3.8 符号配对 (20分) 易理解版。
-
火绒右键管理助手——Windows可用
-
屏幕颜色拾取器.zip
-
多线程的死锁——T2219
-
数量遗传与动植物分子育种:理论、技术和平台-报告19徐云碧.pdf