我的步骤哪里有问题吗?怎么感觉不太对呢,处理后的图像看着很别扭
一、图像梯度
图像在(x, y)点处x方向和y方向上的梯度可以写为:
x方向和y方向上的梯度可以用如下式子表示在一起:
这里又是平方,又是开方的,计算量比较大,于是一般用绝对值来近似平方和平方根的操作,来降低计算量:
二、对图片求反色
原理:
反色的实际含义是将R、G、B值反转。若颜色的量化级别是256,则新图的R、G、B值为255减去原图的R、G、B值。这里针对的是所有图,包括真彩图、带调色板的彩色图(又称为伪彩色图)、和灰度图。真彩图不带调色板,每个象素用3个字节,表示R、G、B三个分量。所以处理很简单,把反转后的R、G、B值写入新图即可,比如一个点的颜色为(0,0,0),反色后为(255,255,255)。
三、例题
对一副图像进行处理,左半部分求梯度,右半部分求反色
// A code block :matlab
f=imread('line.jpg');
g=f;
[h w]=size(f);
for i=2:h
% 左边求梯度
for j=2:w/2
a=f(i,j)-f(i-1,j); % x方向上求梯度
b=f(i,j)-f(i,j-1); % y方向上求梯度
g(i,j)=abs(a)+abs(b);
end
end
for i=1:h
% 右边求反色:颜色的量化级别是256,则新图的R、G、B值为255减去原图的R、G、B值;
for j=(w/2+1):w
g(i,j)=255-f(i,j);
end
end
subplot(1,2,1);
imshow(f);
subplot(1,2,2);
imshow(g);