C++表示灰度图像的对数变换和指数变换不用OPenCV
时间: 2023-07-11 14:07:02 浏览: 207
灰度图像的对数变换和指数变换是图像处理中常用的非线性变换方法,可以通过以下代码实现:
对数变换:
```c++
Mat logTransform(Mat inputImage, float c) {
Mat outputImage = Mat::zeros(inputImage.size(), inputImage.type());
for (int i = 0; i < inputImage.rows; i++) {
for (int j = 0; j < inputImage.cols; j++) {
outputImage.at<uchar>(i, j) = c * log(1 + inputImage.at<uchar>(i, j));
}
}
return outputImage;
}
```
其中,参数`c`是常数,可以根据需要进行调整。
指数变换:
```c++
Mat expTransform(Mat inputImage, float c, float gamma) {
Mat outputImage = Mat::zeros(inputImage.size(), inputImage.type());
for (int i = 0; i < inputImage.rows; i++) {
for (int j = 0; j < inputImage.cols; j++) {
outputImage.at<uchar>(i, j) = c * pow(inputImage.at<uchar>(i, j), gamma);
}
}
return outputImage;
}
```
其中,参数`c`和`gamma`分别表示常数和指数幂,也可以根据需要进行调整。
需要注意的是,这里使用了OpenCV的Mat类来表示图像,如果不使用OpenCV,可以自行实现一个类似的矩阵结构来表示图像。
阅读全文
相关推荐


















