精华内容
参与话题
问答
  • 本篇博客主要记录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图像转换为黑白图像。

    转换公式如下:

    \text{RGB[A] to Gray:} \quad Y  \leftarrow 0.299  \cdot R + 0.587  \cdot G + 0.114  \cdot B


    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:

    彩色空间及cvtColor解析




    图像柔化

    图像柔化其实也就是图像模糊(平滑),算是一个非常简单的操作。


    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:

    SHARPENING: UNSHARP MASK

    GUIDE TO IMAGE SHARPENING

    Unsharp masking[Wikipedia]

    利用unsharp mask锐化图像



    更多图像处理资源,请关注博客:LinJM-机器视觉微博:林建民-机器视觉

    展开全文
  • 利用matlab做图形图像处理界面,实现图像的打开,显示,翻转等功能
  • 完整工程 部分功能效果图

    部分功能效果图

    GitHub:https://github.com/CnYiXiaoNaiHe/OpenCV-   持续更新

    展开全文
  • 本系列博客主要记录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 学习之路 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,下载地址

    一些入门教程:

    OpenCV学习笔记:快速入门例程

    OpenCV入门指南


    更多图像处理、机器视觉资源请关注 博客:LinJM-机器视觉 微博:林建民-机器视觉

    展开全文
  • 这一篇文章记录有关图像显示的问题。 因为对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添加彩色文字与图片

    基础学习笔记之opencv(15):离散傅里叶变换


    更多图像处理、机器学习资源,请关注博客:LinJM-机器视觉  微博:林建民-机器视觉
    展开全文
  • 本篇文章主要记录一下图像处理软件中的图像特效(浮雕、怀旧、Lomo)的实现过程。 图像浮雕效果 浮雕的算法就是对图像中的每一个点做卷积处理,采用的掩模矩阵如下所示: [1 0 0;  0 0 0;  0 0 -1] 假设原图像为...
  • 本篇文章主要记录一下图像处理软件中的图像特效(素描和油画)的实现过程。 图像素描效果 图像素描的实现原理其实很简单,主要是利用边缘检测滤波器来实现。 可供选择的边缘检测滤波器有很多,常用的有Sobel、...
  • 这个功能基本上很多软件都有,比如美图秀秀,女生们的最爱。 美肤的原理,简单来说,其实就是图像平滑操作,不过在这个平滑的过程中最好不能把轮廓给模糊掉。美图秀秀美肤操作的技术没公开,我这里就只谈谈采用双边...
  • 自己写的论文基于GUI的图像处理软件平台的开发-GUI图像处理软件制作详细介绍论文.rar 大家好,我的目标是努力打造精品文章,这个文章是我做完GUI图像处理软件后刚写的,写的目的是为了交流,为初学者起抛砖引玉之...
  • 摄像头视频和图像处理软件-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种格式影像数据的读写,支持包括直方图统计、图像信息数据统计、影像缩放、平移、遥感图像的几何纠正,监督和非监督分类、各种类型的时域、频域滤波增强等获得程序设计大赛二等奖,可以在此...
  • ImagePy是一个用Python开发图像处理软件,支持bmp,rgb,png等常用的图像格式。 它可以处理灰度图像和多通道(彩色)图像,并支持图像堆栈(序列)操作。 它支持多种选择操作(点,线,面,多线,多面,空心多边形...
  • 开源图像处理软件

    千次阅读 2018-11-13 18:11:02
    要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益、多面出击。如今网络发达,图像学的资料其实也到处都是。只是往往个人能力或精力有限,在短时间内无法找到那些也许藏...
  • 基于OpenCVSharp的图像处理软件

    万次阅读 多人点赞 2019-01-08 19:32:47
    本次任务是设计一个能够实现OpenCV部分功能的图像处理软件。目的在于方便图像处理人员在具体编写OpenCV程序前,提前能够对图像进行简单处理,进而帮助开发人员分析该如何对图像进行处理。 使用C#对界面和逻辑进行...
  • SPM是一个医学图像处理软件,基于MATLAB开发
  • 要写好一个图像处理软件,仅靠自己看书是完全不够的,要多方面学习,借鉴前人的经验,要集思广益、多面出击。如今网络发达,图像学的资料其实也到处都是。只是往往个人能力或精力有限,在短时间内无法找到那些也许藏...
  • 常用图像处理软件

    千次阅读 2019-10-30 12:01:00
    1、 最著名的开源图像软件:GIMP。 开发语言:C GIMP号称Linux下的PhotoShop,总观其工程,确实达到了PhotoShop早期版本的功能。三大利器:选区、图层、蒙板一应俱全,滤镜也非常丰富,支持插件。缺点就是界面不...
  • 图像处理软件ImageJ

    2019-10-08 06:49:15
    ImageJ是一个基于java的公共的图像处理软件,它是由National Institutes of Health开发的。可运行于Microsoft Windows,Mac OS,Mac OS X,Linux,和Sharp Zaurus等多种平台。其基于java的特点,使得它编写的程序能...
  • 各位大神,本人只会基础的编程语言,以前用过vb开发过有界面的程序,现在想用C++开发有界面的程序,而且希望能够绘图,和图像处理,甚至是三维图像处理,求大家赐教。本人只会编程语言,其余都是空白,求[color=#FF...
  • Image J 是一个基于java的公共的图像处理软件,它是由National Institutes of Health开发的。可运行于Microsoft Windows,Mac OS,Mac OS X,Linux,和Sharp Zaurus PDA等多种平台。其基于java的特点, 使得它编写的...
  • Image J 是一个基于java的公共的图像处理软件,它是由National Institutes of Health开发的。可运行于Microsoft Windows,Mac OS,Mac OS X,Linux,和Sharp Zaurus PDA等多种平台。其基于java的特点, 使得它编写的...
  • 前者是巴西的免费软件,由美国国家空间研究所(INPE)开发,致力于图像处理和地理信息系统(GIS)分析以及传统的遥感图像分析系统ENVI。 结果证明该模块的实现是正确的,从而可以在制图学领域和环境应用中潜在使用...
  • 采用 C# winform 完成界面编程,用非托管的 C++语言编写图像处理逻辑。...这种方式既发挥了 C# winform 界面编程的快速开发的优点,又保证了用非托管的 C++语言编写图像处理逻辑的执行高效的优点。
  • FPGA图像处理开发流程

    2020-10-29 23:25:23
    FPGA图像处理开发流程 在掌握FPGA基本知识以及数字图像处理基础...一个常规的FPGA图像处理开发流程是由需求分析及问题描述、软件算法设计及验证、硬件平台设计、FPGA映射以及仿真验证几部分组成。如下图所示: 一、需
  • HALCON图像处理软件

    千次阅读 2008-08-25 16:03:00
    HALCON图像处理软件时间:2006-3-6 14:29:16 来源:维视数字视频图像监控网 阅读1817次 什么是HALCON? HALCON包含些什么? HALCON是在世界范围内广泛使用的机器视觉软件。用户可以利用其开放式结构快速开发...
  • 立志于软件开发 图像处理 金融数据挖掘 机电一体化设计
  • 摘要:本文主要介绍了基于MATLAB的图形用户界面(GUI)来制作图像处理软件平台的具体过程和相关技巧,文章主要从几个方面展开论述:第一,简单介绍下GUI与GUIDE;第二,介绍以下GUIDE的模板及其操作方法;第三,详细...

空空如也

1 2 3 4 5 ... 20
收藏数 2,010
精华内容 804
关键字:

图像处理软件开发