求反处理   

       将图像按像素按位进行求反,取得类似照相底片效果。求反处理的图像与原始图“黑白颠倒”,可以看清原始图中灰黑区域的情况。求反的图像一般用于数字图像的初步处理。求反处理适用于彩色图像、灰度图像、二值图像。

彩色图像取反:

程序演示:

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('取反图像')

结果如图:

d62c738dcc2ae390056cd5ffdb436865.jpeg

灰度图像取反:

程序演示:

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('输出图像')

结果如图:

2269ce4656c8a06cf760a9f40044bdee.png

二值图像取反:

程序演示:

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('取反图像')

结果如图:

8d3e64bf523b99772a8f8653f0dcd94c.png


  

Logo

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

更多推荐