2016-11-13 5 views
0

Я хочу, чтобы применить следующие функции преобразования в черно-белое изображение, я знаю, как применить его к следующей функции,, чтобы применить следующую функцию преобразования в черно-белое изображение

transformation function

мой вопрос как применить программу к следующей функции преобразования,

what i wanted to be done

код до сих пор,

clear; 
pollen = imread('Fig3.10(b).jpg'); 
u = double(pollen); 
[nx ny] = size(u) 
nshades = 256; 
r1 = 80; s1 = 10; % Transformation by piecewise linear function. 
r2 = 140; s2 = 245; 
for i = 1:nx 
for j = 1:ny 
if (u(i,j)< r1) 
uspread(i,j) = ((s1-0)/(r1-0))*u(i,j) 
end 
if ((u(i,j)>=r1) & (u(i,j)<= r2)) 
uspread(i,j) = ((s2 - s1)/(r2 - r1))*(u(i,j) - r1)+ s1; 
end 
if (u(i,j)>r2) 
uspread(i,j) = ((255 - s2)/(255 - r2))*(u(i,j) - r2) + s2; 
end 
end 
end 
hist= zeros(nshades,1); 
for i=1:nx 
for j=1:ny 
for k=0:nshades-1 
if uspread(i,j)==k 
hist(k+1)=hist(k+1)+1; 
end 
end 
end 
end 
plot(hist); 
pollenspreadmat = uint8(uspread); 
imwrite(pollenspreadmat, 'pollenspread.jpg'); 

Заранее спасибо

ответ

0

фигура говорит, что для любых интенсивностей, которые находятся между A и B, они должны быть установлены в C. Все, что вам нужно сделать, это изменить ваши две петли for, так что для любых значений между A и B установите выходное местоположение на C. Я также предполагаю, что диапазон включен. Вы можете просто удалить первый и последний if условия и использовать средний:

for i = 1:nx 
    for j = 1:ny 
     if ((u(i,j)>=r1) && (u(i,j)<= r2)) 
      uspread(i,j) = C; 
     end 
    end 
end 

C является константой, что вы поставили перед собой. Обычно для сегментации этот результат очень высок, чтобы отличать передний план от фона. У вас есть изображение uint8, так что C = 255; будет работать.

Однако я бы порекомендовал вам получить более векторное решение. Избегайте for петель и использовать logical индексацию вместо:

uspread = u; 
uspread(u >= r1 & u <= r2) = C; 
+0

как я могу определить 'C' –

+0

Это до вас. Вы сами определяете это. Некоторым людям нравится выбирать большую ценность, чтобы сегментировать вещи из образа. Может быть, 255. – rayryeng

+1

спасибо за ответ sir :) –

 Смежные вопросы

  • Нет связанных вопросов^_^