我有两个错误
非标量运算符
和
未定义的功能'unit8'
以下是代码:
clc
clear all
close all
image=double('img.tif');
filter=[0 -1 0 ; -1 5 -1 ; 0 -1 0];
[rows,cols] = size(image);
outputimage = zeros(rows,cols);
for row = 2:rows-1
for col = 2:col-1
outputimage (row,col)= sum (sum(image(row-1: row+1: col-1: col+1: filter )));
end
end
%figure,imshow (unit8(image)),title ('Originalimage')
outputimage =unit8(outputimage);
figure,imshow (outputimage, title('Enchanceimage'))
答案 0 :(得分:2)
解决方案一
有一种方法可以在没有for循环的情况下计算掩码。 这是代码:
clc
clear all
close all
image=imread('img.tif');
filter=[0 -1 0 ; -1 5 -1 ; 0 -1 0];
[rows,cols] = size(image);
outputimage = zeros(rows,cols);
filtered_3x3 = imfilter(image,filter,'replicate');
outputimage = im2uint8(filtered_3x3);
imshow(outputimage);
首先,您应该使用imread
功能阅读图像,然后使用imfilter
,您可以将蒙版应用于图像。使用im2uint8
,您可以将图片转换为uint8。
解决方案二
如果您想更改自己的代码,需要更改某些行。这是代码:
clc
clear all
close all
image=imread('img.tif');
filter=[0 -1 0 ; -1 5 -1 ; 0 -1 0];
rows = size(image,1);
cols = size(image,2);
outputimage = zeros(rows,cols);
for row = 2:rows-1
for col = 2:cols-1
for i=1:3
outputimage (row,col,i)= sum (sum(double(image(row-1: row+1, col-1: col+1 , i)) .* filter ));
end
end
end
image =uint8(image);
figure,imshow (outputimage)
首先,您应该使用imread
阅读图片。 size(image)
不会为您提供正确的尺寸,因此请为其指定
rows = size(image,1); cols = size(image,2);
。此外,它是col = 2:cols-1
而不是col = 2:col-1
。循环中存在语法错误。核实。使用for i=1:3
,您可以将掩码应用于每个RGB
矩阵。最后,uint8
函数不是unit8
一个!