使用matlab解决对一灰度图像,通过选择相应的灰度级变换函数实现图像的灰度级范围线性扩展
时间: 2024-03-27 12:36:48 浏览: 77
MALAB.m.rar_matlab图像_灰度线性变换
5星 · 资源好评率100%
= (*this).realSub(another, anotherShift - thisShift);
}
return result;
}
```
最后,我们需要根据输入的要求,实现主函数来进行输入输出和运算。具体的实现可以参考下面好的,以下是使用 MATLAB 实现灰度级范围线性扩展的代码:
```matlab
% 读入的代码:
```c++
#include <iostream>
#include <string>
#include <cstring>
#include <cstdlib>
using namespace std;
class BigInteger灰度图像
I = imread('image.jpg');
% 显示原始图像
subplot(1,2,1);
imshow(I {
private:
int length; // 数字的位数
char* digits; // 数字的每一位
public:
BigInteger(); // 构造函数
BigInteger(const char* number); // 带参数构造函数
BigInteger(const BigInteger& another);
title('Original Image');
% 获取灰度值范围
min_gray = min(I(:));
max_gray = max(I(:));
%); // 拷贝构造函数
~BigInteger(); // 析构函数
// 加减运算
BigInteger operator+(const BigInteger& another) const;
BigInteger operator-(const BigInteger& another) const;
// 实数加减运算
BigInteger 设置新的灰度值范围
new_min = 0;
new_max = 255;
% 计算灰度级变换 realAdd(const BigInteger& another, int shift) const;
BigInteger realSub(const BigInteger& another, int shift) const;
//函数
a = (new_max - new_min) / (max_gray - min_gray);
b = new_min - a * min_gray;
输出
void display() const;
};
BigInteger::BigInteger() {
length = 1;
digits = new char[1];
digits[0] = '0';
}
BigInteger::BigInteger(const char* number) {
length = strlen(number);
digits = new char% 对图像进行灰度级变换
J = a * double(I) + b;
% 显示变换后的图像[length];
for (int i = 0; i < length; i++) {
digits[i] = number[length - i - 1];
}
}
BigInteger::BigInteger(const BigInteger& another) {
length = another.length;
digits = new char[length];
subplot(1,2,2);
imshow(uint8(J));
title('Transformed Image');
```
这个代码中,我们首 for (int i = 0; i < length; i++) {
digits[i] = another.digits[i];
}
}
BigInteger::~BigInteger() {
delete[] digits;
}
BigInteger BigInteger::operator+(const BigInteger& another) const {
BigInteger result;
int carry = 0, sum = 0;
int len = length > another.length ? length : another.length;
for (int i先读入一张灰度图像,然后获取图像的最小灰度值和最大灰度值。接 = 0; i < len; i++) {
sum = digits[i] - '0' + another.digits[i] - '着,我们设定新的最小灰度值和最大灰度值,并计算灰度级变换函数。最0' + carry;
carry = sum / 10;
result.digits[i] = sum % 10 + '0';
}
if (carry > 0) {
result.digits[len] = carry + '0';
len++;
}
result.length = len;
return result;
}
BigInteger BigInteger::operator-(const BigInteger& another) const {
BigInteger result;
int borrow后,将图像的每个像素值通过灰度级变换函数进行变换,得到灰度级范围线性扩展后的图像。
阅读全文