2017-11-12 1 views
0
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 그래프를 표시하도록 코드를 수정하는 방법에 대한 제안이미지의 3D 그래프를 어떻게 표시합니까? On MATLab

답변

0

코드를 테스트 한 결과 스크립트의 마지막 4 행이 위에 나온 변수를 사용하지 않는 것 같습니다. 즉, 분리되어 있기 때문에 마지막 4 코드 줄이 3D 그래프와 관련이 없기 전에 어떤 일이 발생했는지 의미합니다.

다음과 같은 코드를 사용하여 마지막 4 개 라인을 교체하는 경우도 나타납니다 및 색상 비율을 나타내는 표시 막대 :

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

희망 내가 도울 수 있습니다.

+0

코드에 2D 그래프가 표시됩니다. 3D 그래프가 아닌 2D 그래프를 만드는 방법을 알고 있습니다. –

+0

3D 그래프를 만들 수 있다고 생각하십니까? –

+0

3D 그래프에 대해 무엇을 갖고 싶습니까? x, y, z 축에 무엇이 있어야할까요? –