使用matlab对图片灰度值进行简单的运算修改

对图片进行基本运算

上下截断

对低于n的灰度值固定为n,高于m的灰度值固定为m。

matlab代码

scss 复制代码
% 读取图像
originalImage = imread("D:\Project\programmes\数字图像处理\R.jpg"');
% 如果图像是彩色的,则转换为灰度图像
if size(originalImage, 3) == 3
    grayImage = rgb2gray(originalImage);
else
    grayImage = originalImage;
end
% 设置灰度值截断的上限和下限
n = 80;
m = 180;
OriginalGrayImage = grayImage;
% 对低于n的灰度值固定为n
grayImage(grayImage < n) = n;
% 对高于m的灰度值固定为m
grayImage(grayImage > m) = m;
% 在同一窗口内并排显示原始图像和处理后的图像
figure;
subplot(1, 2, 1); % 分割窗口为1行2列,并定位到第1个位置
imshow(OriginalGrayImage), title('Original Image');
subplot(1, 2, 2); % 定位到第2个位置
imshow(grayImage), title('Truncated Image');ayImage), title('Truncated Image');

效果

补偿

对所有像素灰度值提升50,超出255的部分算255。

matlab代码

ini 复制代码
% 读取图像
originalImage = imread("D:\Project\programmes\数字图像处理\R.jpg");
% 如果图像是彩色的,则转换为灰度图像
if size(originalImage, 3) == 3
    grayImage = rgb2gray(originalImage);
else
    grayImage = originalImage;
end
% 提升所有灰度值n,但不超过255
n = 50; % 可以根据需要更改此值
enhancedImage = grayImage + n;
enhancedImage = min(enhancedImage, 255); % 确保灰度值不超过255
% 在同一窗口内并排显示原始图像和增强后的图像
figure;
subplot(1, 2, 1); % 分割窗口为1行2列,并定位到第1个位置
imshow(grayImage), title('Original Image');
subplot(1, 2, 2); % 定位到第2个位置
imshow(enhancedImage), title('Enhanced Image');

效果

平方

对灰度值做平方处理,超出255的部分算255。

matlab代码

ini 复制代码
% 读取图像
originalImage = imread("D:\Project\programmes\数字图像处理\R.jpg");
% 如果图像是彩色的,则转换为灰度图像
if size(originalImage, 3) == 3
    grayImage = rgb2gray(originalImage);
else
    grayImage = originalImage;
end
% 对灰度值进行平方处理
squaredImage = double(grayImage).^2;
% 限制最大值不超过255
squaredImage = min(squaredImage, 255);
% 将处理后的图像转换回uint8类型以便显示
squaredImage = uint8(squaredImage);
% 在同一窗口内并排显示原始图像和处理后的图像
figure;
subplot(1, 2, 1); % 分割窗口为1行2列,并定位到第1个位置
imshow(grayImage), title('Original Image');
subplot(1, 2, 2); % 定位到第2个位置
imshow(squaredImage), title('Squared Image');

效果

方根

对灰度值做方根处理。

matlab代码

ini 复制代码
% 读取图像
originalImage = imread("D:\Project\programmes\数字图像处理\R.jpg");
% 如果图像是彩色的,则转换为灰度图像
if size(originalImage, 3) == 3
    grayImage = rgb2gray(originalImage);
else
    grayImage = originalImage;
end
% 对灰度值进行平方处理
squaredImage = double(grayImage).^2;
% 限制最大值不超过255
squaredImage = min(squaredImage, 255);
% 将处理后的图像转换回uint8类型以便显示
squaredImage = uint8(squaredImage);
% 在同一窗口内并排显示原始图像和处理后的图像
figure;
subplot(1, 2, 1); % 分割窗口为1行2列,并定位到第1个位置
imshow(grayImage), title('Original Image');
subplot(1, 2, 2); % 定位到第2个位置
imshow(squaredImage), title('Squared Image');

效果

求反

将每个像素的灰度值从当前值转换为255减去当前值。

matlab代码

ini 复制代码
% 读取图像
originalImage = imread("D:\Project\programmes\数字图像处理\R.jpg");

% 如果图像是彩色的,则转换为灰度图像
if size(originalImage, 3) == 3
    grayImage = rgb2gray(originalImage);
else
    grayImage = originalImage;
end

% 对灰度值进行求反处理
invertedImage = 255 - grayImage;

% 在同一窗口内并排显示原始图像和求反处理后的图像
figure;
subplot(1, 2, 1); % 分割窗口为1行2列,并定位到第1个位置
imshow(grayImage), title('Original Image');

subplot(1, 2, 2); % 定位到第2个位置
imshow(invertedImage), title('Inverted Image');

效果

放缩

将灰度值乘以n倍,如果超过255则按照255算。

matlab代码

ini 复制代码
% 读取图像
originalImage = imread("D:\Project\programmes\数字图像处理\R.jpg");
% 如果图像是彩色的,则转换为灰度图像
if size(originalImage, 3) == 3
    grayImage = rgb2gray(originalImage);
else
    grayImage = originalImage;
end
% 设置放大倍数n
n = 2; % 例如放大2倍,您可以根据需要调整这个值
% 将灰度值乘以n倍
scaledImage = double(grayImage) * n;
% 限制最大值不超过255
scaledImage = min(scaledImage, 255);
% 将处理后的图像转换回uint8类型以便显示
scaledImage = uint8(scaledImage);
% 在同一窗口内并排显示原始图像和放缩后的图像
figure;
subplot(1, 2, 1); % 分割窗口为1行2列,并定位到第1个位置
imshow(grayImage), title('Original Image');
subplot(1, 2, 2); % 定位到第2个位置
imshow(scaledImage), title('Scaled Image');

效果

Gamma

将灰度值做γ次方运算。

matlab代码

ini 复制代码
% 读取图像
originalImage = imread("D:\Project\programmes\数字图像处理\R.jpg");
% 如果图像是彩色的,则转换为灰度图像
if size(originalImage, 3) == 3
    grayImage = rgb2gray(originalImage);
else
    grayImage = originalImage;
end
% 设置Gamma值
gamma = 1.1; % 举例使用1.1,可以根据需要调整
% 应用Gamma运算
gammaCorrectedImage = double(grayImage).^gamma;
% 将处理后的图像转换回uint8类型以便显示
gammaCorrectedImage = uint8(gammaCorrectedImage);
% 在同一窗口内并排显示原始图像和Gamma处理后的图像
figure;
subplot(1, 2, 1); % 分割窗口为1行2列,并定位到第1个位置
imshow(grayImage), title('Original Image');
subplot(1, 2, 2); % 定位到第2个位置
imshow(gammaCorrectedImage), title(['Gamma Corrected Image, Gamma = ', num2str(gamma)]);

效果

相关推荐
Jozky861 个月前
图形学论文笔记
笔记·图形学
赵青青2 个月前
DirectX9(D3D9)游戏开发:高光时刻录制和共享纹理的踩坑
图形学
i_dovelemon3 个月前
使用 GPU 进行 Lightmap 烘焙 - 简单 demo
游戏开发·图形学
无水先生3 个月前
【庞加莱几何-02】反演定理和证明
几何学·图形学
Mhypnos4 个月前
tinyrenderer-切线空间法线贴图
图形学·渲染器实现
无水先生4 个月前
【OpenGL实践12】关于缓存区Framebuffer的运用
图形渲染·图形学
寒江雪WT5 个月前
离散傅里叶变换学习-从一维到海洋模拟(一)
算法·图形学
OhBonsai5 个月前
2D SDF推导8: 2阶贝塞尔曲线
webgl·图形学
OhBonsai5 个月前
2D SDF运算2: 逻辑运算
webgl·图形学
OhBonsai5 个月前
2D SDF运算1: 变换
webgl·图形学