3.5 其他常见的灰度变换技术

Posted thebreakofdawn

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了3.5 其他常见的灰度变换技术相关的知识,希望对你有一定的参考价值。

技术分享图片

技术分享图片
 1 ////////https://blog.csdn.net/uestc_c2_403/article/details/72814206
 2 #include "opencv2/highgui/highgui.hpp"
 3 #include "opencv2/imgproc/imgproc.hpp"
 4 #include "opencv2/opencv.hpp"
 5 #include "opencv2/core/core.hpp"
 6 #include <iostream>
 7 using namespace std;
 8 using namespace cv;
 9 //图像线性变换操作
10 cv::Mat linearTransform(cv::Mat srcImage, float a, int b)
11 {
12     if (srcImage.empty())
13     {
14         std::cout << "No data!" << std::endl;
15     }
16     const int nRows = srcImage.rows;
17     const int nCols = srcImage.cols;
18 cv:; Mat resultImage =
19     cv::Mat::zeros(srcImage.size(), srcImage.type());
20    //图像元素遍历
21    for (int i = 0; i < nRows; i++)
22    {
23        for (int j = 0; j < nCols; j++)
24        {
25            for (int c = 0; c < 3; c++)
26            {
27                //矩阵at操作,检查下标防止越界
28                resultImage.at<Vec3b>(i, j)[c] = saturate_cast<uchar>(a * (srcImage.at<Vec3b>(i, j)[c]) + b);
29            }
30        }
31    }
32    return resultImage;
33 }
34 int main()
35 {
36     cv::Mat srcImage = cv::imread("D:\\大海.jpg");
37     if (srcImage.empty())
38     {
39         return -1;
40     }
41 
42     cv::imshow("源图像", srcImage);
43     //线性变换
44     float a = 1.2;
45     int b = 50;
46     cv::Mat new_image = linearTransform(srcImage, a, b);
47     cv::imshow("dst", new_image);
48     cv::waitKey(0);
49     return 0;
50 }
View Code

技术分享图片

技术分享图片

 

以上是关于3.5 其他常见的灰度变换技术的主要内容,如果未能解决你的问题,请参考以下文章

灰度图像直方图变换的一些代码

阈值分割与区域分割

阈值分割与区域分割

图像的点运算----底层代码与Halcon库函数

常见图像增强(python 实现)

数字图像处理的Matlab实现—灰度变换与空间滤波