使用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)]);

效果

相关推荐
哈市雪花17 小时前
图像处理 之 凸包和最小外围轮廓生成
图像处理·人工智能·图形学·最小外围轮廓·最小外包
zaizai10071 个月前
WebGL编程指南 - 颜色与纹理续
图形学
zaizai10071 个月前
WebGL编程指南 - 绘制和变换三角形
图形学
zaizai10071 个月前
WebGL编程指南 - 入门续
图形学
闲人编程2 个月前
使用Python实现图形学的阴影贴图算法
python·算法·图形学·贴图·阴影贴图
闲人编程2 个月前
使用Python实现图形学的纹理映射算法
开发语言·python·算法·图形学·纹理映射
闲人编程2 个月前
使用Python实现图形学的环境映射算法
开发语言·python·算法·图形学·环境映射
闲人编程2 个月前
Python实现图形学曲线和曲面的Bezier曲线算法
开发语言·python·算法·图形学·曲线·曲面·bezier
CaptainHarryChen2 个月前
从 Affine Particle-In-Cell (APIC) 到 Material Point Method (MPM 物质点法)
图形学·物理仿真·mpm·仿真算法
Jozky863 个月前
图形学论文笔记
笔记·图形学