如何显示图像的 3D 图形?在马特拉布上


clear all
clc
img = imread('TestImage.jpg');
frame_size = size(img);
allpixels = reshape(img, frame_size(1)*frame_size(2), frame_size(3))
[row,col] = size(allpixels);
totalPixels = 0;
count = 0;
white = 0;
black = 0;
red = 0;
green = 0;
blue = 0;
grey = 0;
purplepink = 0;
yelloworange = 0;
for row = 1:row
    count = 0;
    for col = 1:col
        if count == 0
            R = allpixels(row,col);
            count = count + 1;
        elseif count == 1
            G = allpixels(row,col);
            count = count + 1;
        elseif count == 2
            B = allpixels(row,col);
            count = count + 1;
        end
        totalPixels = totalPixels + 1;
    end
        if R > 230 && G > 230 && B > 230
            white = white + 1;
        elseif R < 70 && G < 70 && B < 70
            black = black + 1;
        elseif abs(R - G) <= 5 && abs(G - B) <= 5 && abs(R - B) <= 5
            grey = grey + 1;
        elseif R > B && R > G
            red = red + 1;
        elseif G > B && G >= R
            green = green + 1;
        elseif B >= R && B >= G
            blue = blue + 1;
        end
end
totalPixels = totalPixels/3;
totalPixels
white
black
grey
red
green
blue
white + black + grey + red + green + blue
PercentOfWhite = (white/totalPixels)* 100
A=PercentOfWhite;
PercentOfBlack = (black/totalPixels) * 100
B=PercentOfBlack;
PercentOfGrey = (grey/totalPixels)* 100
C=PercentOfGrey;
PercentOfRed = (red/totalPixels)* 100
D=PercentOfRed;
PercentOfGreen = (green/totalPixels) * 100
E=PercentOfGreen;
PercentOfBlue = (blue/totalPixels) * 100
F=PercentOfBlue;

[x,y]=meshgrid(1:15,1:15);
tri = delaunay(x,y);
z= peaks(15);
trisurf(tri,x,y,z)

上面的代码显示一个 3D 图形。但是,它不显示任何有用的数据。例如,我插入了一个名为TestImage.jpg的图像。它是80%的红色,3D图表出现了。然后我尝试了另一张 80% 蓝色的图像,图表出现了,看起来就像我之前测试的图像一样!我得出的结论是,我的代码没有读取任何图像,它只是随机显示一个没有真实数据结果的 3D。关于如何修复我的代码以显示实际读取我的图像并显示有用数据的 3D 图形的任何建议

我测试了您的代码,看起来您的脚本的最后 4 行没有使用上面的任何变量。这意味着在最后 4 行代码之前发生的任何事情对 3D 图形都无关紧要,因为它是分开的。

如果将最后 4 行替换为以下代码,将出现一个图表并显示表示颜色百分比的条形图:

names = categorical({'PercentOfWhite' 'PercentOfBlack' 'PercentOfGrey' 'PercentOfRed' 'PercentOfGreen' 'PercentOfBlue'});
bar(names,[PercentOfWhite PercentOfBlack PercentOfGrey PercentOfRed PercentOfGreen PercentOfBlue]);

希望我能帮上忙。

最新更新