4. 볼록 렌즈 효과 알고리즘
1798 단어 DigitalImageProcessing
볼록 렌즈 효과 란 볼록 렌즈 를 통 해 얻 은 시각 적 효과 에 해당 한다.
내 가 보기에 볼록 렌즈 효과 의 본질은 일종 의 삽입 값 알고리즘 인 렌즈 중심의 물 체 는 일정한 확 대 를 얻 고 상응하는 가장자리 가 압축 되 며 가장자리 가 연속 되 어야 이미지 가 조 화 롭 고 자 연 스 럽 게 보일 수 있다.
그 알고리즘 은 다음 그림 과 같다.
본인 의 표 현 력 에 한계 가 있 기 때문에 여러분 께 곤 혹 스 러 운 점 을 드 리 면 양해 와 교 류 를 부탁드립니다.
알고리즘 이 제 시 된 이상 지금 필요 한 것 은 맵 함 수 를 찾 는 것 입 니 다. 상기 알고리즘 과 관련 된 점 의 맵 을 실현 할 수 있 습 니 다. 다행히도 많은 함수 들 이 돌출 함수 라면 상기 기능 을 실현 할 수 있 습 니 다. 원 의 반지름 이 r 라 고 가정 합 니 다.해당 맵 함 수 는 다음 과 같 습 니 다.
여기 서 저 는 y = x ^ 2 / r 를 사용 하 겠 습 니 다. 물론 맵 좌 표를 구 할 때 역방향 사 고 를 사용 해 야 합 니 다. 역방향 사고 란 주어진 처리 후의 점 에 대해 원래 이미지 의 위 치 를 찾 은 다음 에 원래 이미지 의 이 점 의 값 을 처리 한 후에 이미지 가 상대 적 인 점 에 부여 하 는 것 입 니 다 (자세히 알 아 보 세 요)!해당 matlab 코드 는 다음 과 같 습 니 다.
img=imgread('1.jpg');
info_size=size(img);
height=info_size(1);
width=info_size(2);
spec_img=zeros(height,width,3);
imshow(img);
figure();
%%%%%%%%%%%%%%x(i,j)
cen_x=width/2;
cen_y=height/2;
radius=150;%%%%%you can change it!!!!!!R!!!!!
radius=min(cen_x,cen_y);
for i=1:height
for j=1:width
distance=(j-cen_x)*(j-cen_x)+(i-cen_y)*(i-cen_y);
%%%%% r^2=(j-cen_x)*(j-cen_x)+(i-cen_y)*(i-cen_y)!!!!!
dis=distance^0.5;
spec_img(i,j,:)=img(i,j,:);
if(distance<=radius^2)
new_j=floor( dis*(j-cen_x)/radius+cen_x);
new_i=floor( dis*(i-cen_y)/radius+cen_y);
spec_img(i,j,:)=img(new_i,new_j,:);
end
end
end
imshow(spec_img/255);
처리 후:
하하, 오목 렌즈 의 효 과 는??????????????여러분 에 비하 면 금방 느낌 이 오 겠 죠!!! 물결 등등 의 효 과 는????????????????????하하!!!!!
친구 들 의 지 도 를 환영 합 니 다. 공유 하고 출처 를 밝 히 는 것 을 환영 합 니 다.
http://blog.csdn.net/wsfdl
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Emgucv Unsharp Mask USM 예화 알고리즘 실현Emgucv 구현 코드 로 변경: private void GetMat(Image byte> srcimg, Image byte> imgBlurred, ref Mat dst, int nAmount = 200) { flo...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.