2011-09-13 11 views
2

私はMatlabを初めて使い、imhist(画像データのヒストグラムを表示する)と同じ仕事をする独自の関数を作りたいと思っていますが、私はこの初心者の初心者です私がそのような機能をどのように開発しようとしているかの手がかりを持っています。 私は何かを作り始めましたが、非常に不完全です。画像データのMatlab hist関数

function [ output_args ] = myhist(x) 
%MYHIST Summary of this function goes here 
%Detailed explanation goes here 

x=imread('flower.jpg'); 

imshow(x); 

[c,d]=hist(x(:),0:1:255); 
figure,plot(d,c); 
figure,plot(c,d); 

%figure,imhist(x); 
end 

あなたが私にどんな役に立つヒントを与えることができれば、私は非常に感謝される...

答えて

2

figure,plot(d,c); 

を交換してみてくださいすることはここでIMHIST機能を実装での私の試みです。公式の機能がないことは、すべてのケースを処理しませんが、それはほとんどの場合、非常によく似た結果を生成する必要があります

function myimhist(img) 
    img = im2uint8(img); 

    [count,bin] = hist(img(:), 0:255); 
    stem(bin,count, 'Marker','none') 

    hAx = gca; 
    set(hAx, 'XLim',[0 255], 'XTickLabel',[], 'Box','on') 

    %# create axes, and draw grayscale colorbar 
    hAx2 = axes('Position',get(hAx,'Position'), 'HitTest','off'); 
    image(0:255, [0 1], repmat(linspace(0,1,256),[1 1 3]), 'Parent',hAx2) 
    set(hAx2, 'XLim',[0 255], 'YLim',[0 1], 'YTick',[], 'Box','on') 

    %# resize the axis to make room for the colorbar 
    set(hAx, 'Units','pixels') 
    p = get(hAx, 'Position'); 
    set(hAx, 'Position',[p(1) p(2)+26 p(3) p(4)-26]) 
    set(hAx, 'Units','normalized') 

    %# position colorbar at bottom 
    set(hAx2, 'Units','pixels') 
    p = get(hAx2, 'Position'); 
    set(hAx2, 'Position',[p(1:3) 26]) 
    set(hAx2, 'Units','normalized') 

    %# link x-limits of the two axes 
    linkaxes([hAx;hAx2], 'x') 
    set(gcf, 'CurrentAxes',hAx) 
end 

のは、サンプル画像でそれをテストしてみましょう:

I = imread('coins.png'); 
figure(1), myimhist(I), title('myimhist') 
figure(2), imhist(I), title('imhist') 

myimhist imhist

ヒストグラムの2つの異なるピークを処理するために、IMHISTがy制限をどのように調整しているかに注意してください。

0

私はあなたの目標を理解している場合わかりません。

figure,bar(d,c); 
関連する問題