基于matlab的机器视觉测量---求反处理(8)
·
求反处理
将图像按像素按位进行求反,取得类似照相底片效果。求反处理的图像与原始图“黑白颠倒”,可以看清原始图中灰黑区域的情况。求反的图像一般用于数字图像的初步处理。求反处理适用于彩色图像、灰度图像、二值图像。
彩色图像取反:
程序演示:
clc
clear all
I = imread('D:\\images\\图形.jpg') ; %读取图像
figure
imshow(I)
title('原图像');
%%%作差获得三通道图像的反色图像
gray(:,:,1) = 255 - I(:,:,1);
gray(:,:,2) = 255 - I(:,:,2);
gray(:,:,3) = 255 - I(:,:,3);
figure
imshow(gray)
title('取反图像')
结果如图:

灰度图像取反:
程序演示:
clc
clear all
I = imread('D:\\images\\图形.jpg'); %读入图像
figure
imshow(I)
gray = rgb2gray(I); %灰度处理
figure
imshow(gray)
[x,y] =size(gray); %获取灰度图像的行、列数
img = zeros(x,y); %新建一个0矩阵,用于储存img图像
for i = 1:x %遍历图像
for j = 1:y
img(i,j) = 255 - gray(i,j); %对灰度图像做差取反
end
end
img = uint8(img); %输入数据保持不变
figure
imshow(img);
title('输出图像')
结果如图:

二值图像取反:
程序演示:
clc
clear all
I = imread('D:\\images\\图形.jpg'); %读取图像
% I =double(I);
figure
imshow(I)
gray = rgb2gray(I); %灰度处理
figure
imshow(gray)
[x,y] =size(gray); %获得灰度图像的尺寸
BW = zeros(x,y); %建立一个0矩阵
T = 170; %设置初始阈值
for i = 1:x %遍历图像
for j = 1:y
if(gray(i,j) >= T) %如果灰度值大于等于T
BW(i,j) = 1; %则BW的灰度值置为1
else
BW(i,j) = 0; %否则BW的灰度值置为0
end
end
end
figure
imshow(BW);
title('输出图像')
BW1 = zeros(x,y);
for a = 1:x
for b = 1:y
if(BW(a,b)==1) %如果BW的灰度值为1
BW1(a,b) = 0; %则BW1的灰度值为0
else
BW1(a,b) = 1; %否则BW1的灰度值为1
end
end
end
figure
imshow(BW1)
title('取反图像')
结果如图:

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)