Delphi 이미지 처리 - 선명하게 만들기
'델파이 이미지 처리'시리즈는 효율을 중심으로 하고 일반 코드는 PASCAL이며 핵심 코드는 BASM을 사용한다.
《C++ 이미지 처리》 시리즈는 코드가 뚜렷하고 읽을 수 있는 것을 위주로 하고 모두 C++ 코드를 사용한다.
가능한 한 양자의 내용이 일치하도록 유지하고 서로 대조할 수 있다.
본고의 코드는 반드시 문장의 ImageData를 포함해야 한다.pas 단원.
Photoshop의 선명한 필터는 이미지에 볼륨을 지정하는 간단합니다. 볼륨 템플릿은 다음과 같습니다.
0 -1 0
-1 8 -1
0 -1 0
Delphi 이미지 프로세싱 - 이미지 볼륨의 일반 볼륨 프로세싱을 사용할 수 있지만 전문적인 프로세싱을 사용하는 것이 더 빠를 것 같아서 다음과 같은 이미지 선명화 프로세싱을 작성했습니다.
procedure DoSharpen(var Dest: TImageData; const Source: TImageData);
asm
push ebp
push esi
push edi
push ebx
mov ebp, [edx].TImageData.Stride
call _SetCopyRegs
pxor mm7, mm7
pcmpeqw mm5, mm5
psrlw mm5, 15
psllw mm5, 1
@@yLoop:
push ecx
@@xLoop:
// dest.argb = (center * 8 - up - down - left - right + 2) / 4
movd mm2, [esi+4] // up
movd mm1, [esi+ebp] // left
movd mm0, [esi+ebp+4] // center
movd mm3, [esi+ebp+8] // right
movd mm4, [esi+ebp*2+4]// down
punpcklbw mm0, mm7
punpcklbw mm1, mm7
punpcklbw mm2, mm7
punpcklbw mm3, mm7
punpcklbw mm4, mm7
psllw mm0, 3
psubw mm0, mm1
psubw mm0, mm2
psubw mm0, mm3
psubw mm0, mm4
paddw mm0, mm5
psraw mm0, 2
packuswb mm0, mm7
movd [edi], mm0
add esi, 4
add edi, 4
loop @@xLoop
pop ecx
add esi, eax
add edi, ebx
dec edx
jnz @@yLoop
pop ebx
pop edi
pop esi
pop ebp
emms
end;
procedure ImageSharpen(var Data: TImageData);
var
src: TImageData;
begin
if Data.AlphaFlag then
ArgbConvertPArgb(Data);
src := _GetExpandData(Data, 1);
DoSharpen(Data, src);
if Data.AlphaFlag then
PArgbConvertArgb(Data);
FreeImageData(src);
end;
다음은 각진 프로세스를 호출하는 간단한 예입니다.
procedure TForm1.Button1Click(Sender: TObject);
var
bmp: TGpBitmap;
g: TGpGraphics;
data: TImageData;
begin
bmp := TGpBitmap.Create('..\..\media\source.bmp');
data := LockGpBitmap(bmp);
ImageSharpen(data);
UnlockGpBitmap(bmp, data);
g := TGpGraphics.Create(Canvas.Handle);
g.DrawImage(bmp, 0, 0);
g.Free;
bmp.Free;
end;
'Delphi 이미지 처리'시리즈는 GDI+ 단원을 사용하여 주소를 다운로드하고 설명합니다.'GDI+ for VCL의 기초-GDI+와 VCL'참조.
수준에 한계가 있기 때문에 실수는 불가피하니 시정과 지도를 환영합니다.메일주소:[email protected]
Delphi 이미지 처리 - 포스트 인덱스에 액세스할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.