当前位置: 首页 > news >正文

叫别人做网站要给什么东西湖南网站设计外包哪家好

叫别人做网站要给什么东西,湖南网站设计外包哪家好,可以做任务看漫画的漫画网站,做网站前台需要什么技能目录 1、介绍1.1 灰度反转1.2 图像对数变换1.3 图像伽马变换 2、效果图3、代码实现4、源码展示 1、介绍 1.1 灰度反转 灰度反转是一种线性变换,是将某个范围的灰度值映射到另一个范围内,一般是通过灰度的对调,突出想要查看的灰度区间。 S …

目录

  • 1、介绍
    • 1.1 灰度反转
    • 1.2 图像对数变换
    • 1.3 图像伽马变换
  • 2、效果图
  • 3、代码实现
  • 4、源码展示

1、介绍

1.1 灰度反转

灰度反转是一种线性变换,是将某个范围的灰度值映射到另一个范围内,一般是通过灰度的对调,突出想要查看的灰度区间。

S = L − 1 − r ( r ⊂ [ 0 , L − 1 ] ) S = L -1-r (r \subset [0,L-1]) S=L1r(r[0,L1])
比如在以下胸片图像中提取白色絮状形状,在黑色背景下看的不太明显,就可以使用灰度反转增强图像的可视化效果。
灰度反转

output_img = input_img.clone();
for(int i = 0; i < input_img.rows; i++)
{for(int j = 0; j < input_img.cols; j++){output_img.at<uchar>(i, j) = 255 - input_img.at<uchar>(i, j)}
}

1.2 图像对数变换

对数变换可以将图像中低灰度值的部分进行提升,显示出低灰度部分的特征,对高灰度值部分进行抑制,减少高灰度值部分的细节,从而实现增项图像俺不细节,优化图像的对比度。
S = c log ⁡ ( 1 + r ) S=c\log(1+r) S=clog(1+r)
其原理就是,对数曲线在像素值低的区域斜率大,在像素值高的地方斜率小。
对数图像
对数变换后图像的灰度值可能会超出0~255的区间,所以在对数变换后要进行归一化处理,将图像灰度值调节回0-255的区间。
对数变换效果

	Mat LogarithmImg = grayImg.clone();for(int i=0;i<grayImg.rows;i++){for(int j=0;j<grayImg.cols;j++){LogarithmImg.at<uchar>(i,j) = 6*log((double)grayImg.at<uchar>(i,j) + 1);}}normalize(LogarithmImg, LogarithmImg, 0, 255,NORM_MINMAX);convertScaleAbs(LogarithmImg,LogarithmImg);

1.3 图像伽马变换

图像的伽马变换其实就是通过非线性变换将图像中较暗区域的灰度值进行增强,对较亮区域的灰度值进行抑制,从而获得图像比较好的细节特征。
s = c r γ ( r ∈ [ 0 , 1 ] ) s=cr^\gamma (r\in[0, 1]) s=crγ(r[0,1])
r为灰度的输入值,c为灰度缩放系数,伽马因子控制整个变换的缩放程度。
伽马变换效果

    Mat gammaImg = grayImg.clone();for(int i=0;i<grayImg.rows;i++){for(int j=0;j<grayImg.cols;j++){gammaImg.at<uchar>(i,j) = 6*pow((double)grayImg.at<uchar>(i,j), 0.5);}}normalize(gammaImg, gammaImg, 0, 255,NORM_MINMAX);convertScaleAbs(gammaImg,gammaImg);

2、效果图

使用lena图进行灰度反转、对数变换、伽马变化测试,在Qt上实现加载和变换。
图像处理效果图

3、代码实现

widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include "opencv2/opencv.hpp"
#include <QResizeEvent>QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEusing namespace cv;
class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void on_btn_loadPic_clicked();void on_btn_InversionTrans_clicked();void on_btn_logarithmTrans_clicked();void on_btn_gammaTrans_clicked();void on_btn_resetPic_clicked();private:Ui::Widget *ui;// 灰度图像Mat grayImg;// Mat图像类型转换为QImageQImage cvMat2QImage(const cv::Mat &mat);
};
#endif // WIDGET_H

widget.cpp

#pragma execution_character_set("utf-8")
#include "widget.h"
#include "ui_widget.h"
#include <QDebug>Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setWindowTitle("OpenCV图像变换");
}Widget::~Widget()
{delete ui;
}void Widget::on_btn_loadPic_clicked()
{Mat Img = imread("lena.png");cvtColor(Img, grayImg, COLOR_BGR2GRAY);QImage qImg_Gray = cvMat2QImage(grayImg);ui->lbl_grayPic->setPixmap(QPixmap::fromImage(qImg_Gray.scaled(ui->lbl_grayPic->size())));
}void Widget::on_btn_InversionTrans_clicked()
{Mat InversionImg = grayImg.clone();for(int i=0;i<grayImg.rows;i++){for(int j=0;j<grayImg.cols;j++){InversionImg.at<uchar>(i,j) = 255 - grayImg.at<uchar>(i,j);}}QImage qImg_Inversion = cvMat2QImage(InversionImg);ui->lbl_InversionPic->setPixmap(QPixmap::fromImage(qImg_Inversion.scaled(ui->lbl_InversionPic->size())));
}void Widget::on_btn_logarithmTrans_clicked()
{Mat LogarithmImg = grayImg.clone();for(int i=0;i<grayImg.rows;i++){for(int j=0;j<grayImg.cols;j++){LogarithmImg.at<uchar>(i,j) = 6*log((double)grayImg.at<uchar>(i,j) + 1);}}normalize(LogarithmImg, LogarithmImg, 0, 255,NORM_MINMAX);convertScaleAbs(LogarithmImg,LogarithmImg);QImage qImg_Logarithm = cvMat2QImage(LogarithmImg);ui->lbl_LogPic->setPixmap(QPixmap::fromImage(qImg_Logarithm.scaled(ui->lbl_LogPic->size())));
}void Widget::on_btn_gammaTrans_clicked()
{Mat gammaImg = grayImg.clone();for(int i=0;i<grayImg.rows;i++){for(int j=0;j<grayImg.cols;j++){gammaImg.at<uchar>(i,j) = 6*pow((double)grayImg.at<uchar>(i,j), 0.5);}}normalize(gammaImg, gammaImg, 0, 255,NORM_MINMAX);convertScaleAbs(gammaImg,gammaImg);QImage qImg_Gamma = cvMat2QImage(gammaImg);ui->lbl_GammaPic->setPixmap(QPixmap::fromImage(qImg_Gamma.scaled(ui->lbl_GammaPic->size())));
}void Widget::on_btn_resetPic_clicked()
{ui->lbl_grayPic->clear();ui->lbl_InversionPic->clear();ui->lbl_LogPic->clear();ui->lbl_GammaPic->clear();
}QImage Widget::cvMat2QImage(const cv::Mat &mat)
{switch ( mat.type() ){// 8-bit  4 channelcase CV_8UC4:{QImage image( (const uchar*)mat.data, mat.cols, mat.rows, static_cast<int>(mat.step), QImage::Format_RGB32 );return image;}// 8-bit  3 channelcase CV_8UC3:{QImage image( (const uchar*)mat.data, mat.cols, mat.rows, static_cast<int>(mat.step), QImage::Format_RGB888 );return image.rgbSwapped();}// 8-bit  1 channelcase CV_8UC1:{static QVector<QRgb>  sColorTable;// only create our color table onceif ( sColorTable.isEmpty() ){sColorTable.resize( 256 );for ( int i = 0; i < 256; ++i ){sColorTable[i] = qRgb( i, i, i );}}QImage image( (const uchar*)mat.data, mat.cols, mat.rows, static_cast<int>(mat.step), QImage::Format_Indexed8 );image.setColorTable( sColorTable );return image;}default:qDebug("Image format is not supported: depth=%d and %d channels\n", mat.depth(), mat.channels());qWarning() << "cvMatToQImage - cv::Mat image type not handled in switch:" << mat.type();break;}return QImage();
}

4、源码展示

本小例程的代码放到我的开源gitte项目里,欢迎一起学习交流,也希望能收获你的小星星。
项目源码GrayTrans

http://www.hkea.cn/news/172814/

相关文章:

  • 学校网站建设管理办法本周新闻热点事件
  • 网站移动版怎么做网站创建公司
  • wordpress 微商城模板下载地址苏州seo推广
  • 珠海网站哪家好百度com百度一下你
  • wordpress wp.net网络优化工程师是做什么的
  • 刷会员网站怎么做外贸如何推广
  • 专做女装的网站网站备案是什么意思
  • 没有网站可以做seo排名吗小学生简短小新闻摘抄
  • 做程序网站需要什么代码宁波seo搜索排名优化
  • 网站建设开发语言新冠病毒最新消息
  • 怎么做1688网站网页制作工具有哪些
  • 一个网站的主题和设计风格最好用的免费建站平台
  • 网站开发主页手机优化游戏性能的软件
  • 怎么做属于自己的域名网站网络策划方案
  • destoon做的网站百度商务合作联系
  • 金山区网站制作网络营销策划书1500字
  • 厦门网站建设制作工具熊猫关键词挖掘工具
  • 徐州网站建设 网站推广百度首页快速排名系统
  • 在线转格式网站怎么做拼多多seo 优化软件
  • 成都理工疫情最新消息贵港seo
  • 网站如何防止攻击怎么自己做一个小程序
  • 企业网站建设英文百度收录
  • wordpress查版本sem和seo的区别
  • 网站设计说明书怎么写网站建设平台官网
  • 有建网站的软件阿里云域名注册万网
  • 站长工具排名分析怎么创建公司网站
  • 网站建设标书四川seo哪里有
  • 接网站开发做多少钱建一个外贸独立站大约多少钱
  • wordpress表单录入seo报告
  • python做网站显示表格星巴克seo网络推广